L
ludao
Unregistered / Unconfirmed
GUEST, unregistred user!
Stream : TWinSocketStream;
buffer1: array[0 .. 1023] of Char;
Stream := TWinSocketStream.Create(ClientSocket, 30000);
FillChar(Buffer1, 1024, 0);
if Stream.WaitForData(20000) then //等待数据到来(1)
begin
if Stream.Read(Buffer1, 1024) = 0 then //读数据(2)
ClientSocket.Close
else
begin
//处理受到的数据(3)
Stream.Free;
ClientSocket.Close;
end;
end
else
ClientSocket.Close;//(4)
end;
except
HandleException;
end;
我在线程里使用类似上面的过程,动态创建ClientSocket.(我是客户端).
但是,实际测试过程中,当通讯压力比较大时,该过程经常很快执行(2)这条语句!
按说应该等待20s读不到数据才会执行(2),可我的为什么经常是(但并不是每次都是,大概30%是这样)一运行到(1)以后,马上就可是执行(2)!
哪位大虾能解释一下,原因在哪里?谢谢
buffer1: array[0 .. 1023] of Char;
Stream := TWinSocketStream.Create(ClientSocket, 30000);
FillChar(Buffer1, 1024, 0);
if Stream.WaitForData(20000) then //等待数据到来(1)
begin
if Stream.Read(Buffer1, 1024) = 0 then //读数据(2)
ClientSocket.Close
else
begin
//处理受到的数据(3)
Stream.Free;
ClientSocket.Close;
end;
end
else
ClientSocket.Close;//(4)
end;
except
HandleException;
end;
我在线程里使用类似上面的过程,动态创建ClientSocket.(我是客户端).
但是,实际测试过程中,当通讯压力比较大时,该过程经常很快执行(2)这条语句!
按说应该等待20s读不到数据才会执行(2),可我的为什么经常是(但并不是每次都是,大概30%是这样)一运行到(1)以后,马上就可是执行(2)!
哪位大虾能解释一下,原因在哪里?谢谢