ServerSocket1.Socket.Connections[n]中的n是系统自动维护的,
也就是说,当客户端连接时自动在Connections中增加一个,当断开时自动减少一个,
那么问题的关键就是具体是哪一个n?因此我利用一个TStringList与Connections同步:
(1)当客户端连接时,在OnConnect事件中向TStringList中添加一个客户端的IP地址,
那么添加的TStringList的Index刚好与Connections中的n相对应;
(2)当客户端断开时,在OnDisConnect事件中从TStringList中删除一个客户端的IP地址,
也就去掉了Connections中的对应的n
(3)这样只要知道客户端的IP地址(可用Socket.RemoteAddress获知),就可以用
ID:=ClientList.IndexOf(Socket.RemoteAddress)获知该Connections的n
(4)用ServerSocket1.Socket.Connections[ID]调用所需的Socket的所有方法、属性了!
这个方法已经通过实验(五个客户端),的确可行!
或
for i:=0 to serversocket.socket.count-1 do
if serversocket.socket.connections.handle = socket.handle{指定的目的客户端} then
serversocket.socket.connections.sendtext()
我也是从大富翁上学来的