TServerSocket怎么拿到当前对话的客户端的连接号?Socket.Connections[]用的(100分)

  • 主题发起人 主题发起人 donyad
  • 开始时间 开始时间
D

donyad

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在学做邮件服务器
必然要保存所有已连接的客户的一些状态
Server控件的事件中我看到有一个 *Socket 的参数
能从这里拿到当前连接的客户端的连接信息么?
谢过
 
TServerSocket的哪个Connections就是保存了所有的连接数组
 
虽然我可以拿到.activeconnection连接的总数
但是我不清楚当前与我对话的到底是connections[0]还是connections[1]
我可以直接用参数中的socket->sendtext回话但是没法保存该客户的状态
还是不行
 
其实这个没个查~

ServerSocket1.Socket.Connections[n]中的n是系统自动维护的,
也就是说,当客户端连接时自动在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的所有方法、属性了!

明白了吧!!你要的问题就是我给你的说的第三点。
说的很明白了啊`
嘿嘿`
要代码么?》
给我加分`
YE!~~~~~~~~~~~~~~~~~~~~~~~~~~
 
还有,如果是同IP的连接呢?
我在用Socket->SocketHandle标记
这个是连接唯一的整数只是很大罢了(1xxx)
问题先开着
我trytry先
实现了就结帐放分
谢过
 
搞定
这个方法果然管用
放分
 
后退
顶部