请问tserversocket如何管理client端的呢?(100分)

  • 主题发起人 主题发起人 netspur
  • 开始时间 开始时间
N

netspur

Unregistered / Unconfirmed
GUEST, unregistred user!
tserversocket是怎么管理各个client端的呢?
好象有一个connections数组,不过我不知道怎么用,请帮帮我,谢了。
 
按照下标访问ServerSocket.Connections[n]就可以了。
 
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()

我也是从大富翁上学来的
 
多人接受答案了。
 
后退
顶部