求助一个关于IdTCPServer的问题
delphi吧
全部回复
仅看楼主
level 1
zyoz500 楼主
今天在做IdTCPServer方面问题,我在链接后断开,断开有以下操作
1.AThread: TIdPeerThread
遍历AThread然后Disconnect
2.IdTcpServer1.Threads.LockList.Remove(AThreadBuffer);
即把IdTcpServer中的AThread进程从列表中移除,否则会出现Terminate Thread Timeout
3.IdTcpServer1.Threads.UnlockList; 解锁//去掉此语句没有太大问题
4.IdTCPServer1.Active := false;失活
然后我又重启IdTCPServer
即IdTCPServer1.Active := false;
但是客服端可以进行链接,但是服务器端的onconnect事件无法触发。。。。。
完全没有道理
2014年03月26日 07点03分 1
level 1
zyoz500 楼主
测试出来了
idTcpServer1.Threads.LockList.Remove(AThreadBuffer);
这一句是有问题的,remove 就这么蛋疼?
换成另一句
idTcpServer1.Threads.clear;
就可以。。。。
2014年03月26日 08点03分 2
多看一下源码。。
2014年03月27日 00点03分
level 1
我在收到其中一个客户端发过来的信息后,再给每个客户端发信息,OnConnect就不能触发了,请问是什么原因?而且也不能再接受其它原来已经连接的客户端的信息了.只有第一次点发送信息的那个客户端还可以发送信息过来.这个函数有问题吗?
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var i: integer;
LContext: TIdContext;
AMessage: string;
begin
AMessage := Trim(AContext.Connection.IOHandler.ReadLn());
with IdTCPServer1.Contexts.LockList do
begin
try
for i := 0 to Count - 1 do
begin
LContext := IdTCPServer1.Contexts.LockList[i];
LContext.Connection.IOHandler.writeLn('#'+AMessage);
end;
finally
IdTCPServer1.Contexts.UnlockList;
end;
end;
end;
2015年07月02日 09点07分 3
1