Cyfrowy Baron napisał(a):Zdarzenie OnRead służy do nasłuchiwania. Teraz zastanów się! Odbieranie komunikatów powinno odbywać się w zdarzeniu OnRead, gdyż po to ono jest, ale Ty stawiasz wszystko na głowie i umieszczasz w tym zdarzeniu kod, który można by pewnie umieścić gdzieś indziej, a odbieranie komunikatów chcesz przenieść tam gdzie nie jego miejsce. Zastanów się nad tym. Problemem nie jest odbieranie komunikatów, tylko te inne zadania, które umieściłeś w zdarzeniu OnRead.
no to jeszcze inaczej chce pobrac czesc pliku:
Wysylam dane do strony aby pobrac wielkosc pliku (Content-Length:)
Odbieram dane o wielkosci pliku (w onread jako Content-Length:)
i nastepnie wysylam pobranie danego ciagu z pliku (Socket->SendText(dan1))
no i kolejny krok wykona mi to co powyzej poniewaz poniewaz jest to w onRead wiec sie zapetli bedzie wysylal i odbieral a w onRead program nie wie kiedy chce wykonac akurat ta czynnosc czy inna.
Zamotane to:/
- Kod: Zaznacz cały
void _fastcall TForm1::ClientSocket2Read(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString dane = Socket->ReceiveText();
AnsiString dane1;
dane = dane.SubString(dane.Pos("Content-Length:"),dane.Length());
dane = dane.SubString(1,dane.Pos("\r\n")-1);
dane = dane.SubString(17,dane.Length());
dane1=dane;
dane=dane-100;
dane=dane+"-"+dane1;
AnsiString dan1;
dan1 =
"GET /chat/room_0.log HTTP/1.1\r\n"
"Host: nazwahosta \r\n" //host malo wazny
"Accept: */* \r\n"
"Connection: keep-alive\r\n"
"Keep-Alive: 0\r\n"
"Accept-Range: bytes \r\n"
"Range: bytes="+dane+"\r\n\r\n" ;
ClientSocket2->Socket->SendText(dan1);
AnsiString address = Socket->ReceiveText();
address = address.SubString(address.Pos(nick1),address.Length());
address = address.SubString(address.Pos("IP- ")+4,address.Length());
address = address.SubString(1,address.Pos("\n")-1);
}
Uzywalem ifow dla zmiennej zeby wykonac to co chce ale bylo duzo problemow bo jeszcze w tym kodzie jest cala obsluga czata czyli odbieranie wiadomosci. Dlatego chcialem odbierac dane w funkcji w ktorej je wysylam badz jakis bardziej alternatywne rozwiazanie