Delphi xe 的Indy控件 TIdTCPClient 监听问题
TIdTCPServer 收发都没有问题了,现在是 TIdTCPClient 监听有问题了
TCPClient.Connect成功以后,会 创建一个线程
//创建线程
ThreadHandle := CreateThread(nil, 0, @TForm5.ClientListen, nil, 0, ThreadId);
下面就是仿照 TIdTCPServer 玩的,原来的 Socket.ReadLn 没有问题,现在换成这个Socket.ReadBytes或者.IOHandler.ReadBytes,都出现一个问题,就是服务器端发送的字节,客户端没有响应也就是 检查len =0,但是客户端发送字节后,服务器照常接收,这个时候上次发给客户端的字节过来了,也就是检查len>0了,很奇怪,也就是大家有什么好的建议
procedure TForm5.ClientListen;
var
len:integer;
s:string;
buffer:TBytes;
begin
while true do
begin
try
len :=Form5.TCPClient.Socket.InputBuffer.Size;
if len > 0 then
begin
//s :=Form5.TCPClient.Socket.ReadLn('');
Form5.TCPClient.Socket.ReadBytes(buffer, len, false);
//Form5.TCPClient.IOHandler.ReadBytes(buffer, len, false);
//转化成字符串
s := stringof(buffer);
Form5.SendConsole.Lines.Add(s);
end;
except
end;
end;
end;