你用的是TClientSocket与TServerSocket吧?
用阻塞方式的话,自然首选多线程,因为这是一种同步方式程序会一直等待直到接收到数据
或超时。
如果文件时被分成几块来传输的那我觉得就需要自己设定一个简单的通讯协议来完成了,这
并不是很复杂。至于说在阻塞方式下就不需要定义OnRead方法了,只需在线程的Execute方法
中建立循环来不断检查接收到的数据。
也许下面代码示例对你有所帮助:
wssRecvStream : TWinSocketStream;
clientSocket1 : TClientSocket;
wssRecvStream := TWinSocketStream.Create(clientSocket1.Socket,receiveTimeOut);
procedure TMyThread.Execute
var
Buffer : Array[0..2047] of Char;
recvNum : Integer;
begin
while true do
if clientSocket1.Socket.Connected and wssRecvStream.WaitForData(receiveTimeOut) then
begin
FillChar(Buffer,SizeOf(Buffer),0);
recvNum := wssRecvStream.Read(Buffer, SizeOf(Buffer));
recevedBytes := recvNum;
end;
end;
end;