procedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);
var
strPLen: string;
begin
SetLength(strPLen,100);
AThread.Connection.ReadBuffer(PChar(strPLen)^, 100);
...............
end;
ReadBuffer时,若长度小于包实际长度,将出于阻塞状态。
此时:我想AThread.Connection.Disconnect。
请问如何处理。
var
strPLen: string;
begin
SetLength(strPLen,100);
AThread.Connection.ReadBuffer(PChar(strPLen)^, 100);
...............
end;
ReadBuffer时,若长度小于包实际长度,将出于阻塞状态。
此时:我想AThread.Connection.Disconnect。
请问如何处理。
ReadBuffer时,若长度大于包实际长度,将出于阻塞状态。
根据这个大小去设置接收缓冲
var
strPLen: string;
size:integer;
begin
size:=AThread.Connection.ReadInteger;//先读出发送过来的数据大小
SetLength(strPLen,size);//设置数据大小
AThread.Connection.ReadBuffer(PChar(strPLen)^, size);//这样就可以了
...............
end; 不过要应该上面给出的代码,前提是发送端必须先发送数据大小,再发送数据