Я пишу небольшой прокси на free pascal, используя synapse. Возникла проблемма следующего плана:
В коде после установки соединения и авторизации клиента работает следующий участок кода:
- Код: Выделить всё
//получаем данные от клинта
rec_packet:=Self.ConnectionSocket.RecvPacket(120000);
str_stream:=TStringStream.Create(rec_packet);
//отправляем данные в интернет
tcp.SendStreamRaw(str_stream);
str_stream.Destroy(); str_stream:=nil;
//получаем ответ из интернета
rec_packet:=tcp.RecvPacket(120000);
sleep(100); //вот без этого данные приходят не полностью, если их много!!!
//отправляем ответ клиенту
str_stream:=TStringStream.Create(rec_packet);
Self.ConnectionSocket.SendStreamRaw(str_stream);
str_stream.Destroy(); str_stream:=nil;
Вот почему после rec_packet:=tcp.RecvPacket(120000); нужно немного подождать sleep(100); чтобы получить данные полностью ?