为什么只传来一半?
我同意shangcm的办法。
TList的Indexof方法同SeverSocket.socket.Connections正好匹配,都是指向一个
数组的位置。当新增加一个连接时,i:=i+1,新增的连接添加到activeConnections
数组的最后,Tlist的Indexof也增加1。Connections数组项(对应TList的Indexof)
由0到i;当断开一个连接时(无论i=0 or 最后一个[i=ActiveConnections-1],or 中
间的某个连接[0<i<ActiveConnections-1]),数组项的位置(index)将按原顺序自动重排。
当选择Tlist的某一项时,得到其i=indexof的值,其对应的连接就是Connections。
知道了这个原理后,也可以通过其它办法来实现。我最近做一套C/S系统,涉及对
在线用户的监控问题,用以上的办法只能在服务器端实现。现在我要实现服务安装在
服务器端,监控允许安装在一个客户端。显然服务器的TList的内容从服务端实时传递
的客户端较难实现,因此用数据表(Sql server)代替TList,其中每次登陆的ID为标
识,整数型,自动增加1,在使用前清空数据。通过AdoQuery查询该表,由于AdoQuery
.recordcount对应Tlist.cout和Socket.ActivesConnections,AdoQuery.RecNo对应
TList.indexof和Socket.Connection,所以完全可以实现同样的功能,实践证明也是
可行的。