-

- 加为好友
- 发送私信
- 在线聊天
-
cai_kkk
- 等级:

- 可用分等级:
- 总技术分:
- 总技术分排名:
- 结帖率:
|
| 发表于:2008-08-19 23:28:11 楼主 |
需求: 1.长连接网络通信,利用TIdTcpserver,对每个不同的客户端发送来的数据进行分析,然后根据一定的逻辑判断,给这些客户端返回不同的对应数据. 和网络游戏有些类似.当client1连接并发送数据时,IdTcpserver将Data2,Data3..Datan分别发送给client2,client3..clientn(已连接的其他客户端). 2.利用TIdTcpserver及时发现并关闭不活动的网络连接,比如有的客户机已经死机或突然断线. 装的D7没有Indy的Demo.自己研究了半天也没找到合适的实现方法,关键是有了数据Data2后,无法确定哪个连接线程是client2的. 自己的想法: { 在TIdTcpserver的OnExcute方法里获取Athread的threadID和客户端IP,将两者建立对照关系(对照表). 在往指定的客户端(client2)发送数据时,根据IP找到threadID,然后循环将TIdTcpserver.Threads.LockList.Items[i]取出, If TIdTcpserver.Threads.LockList.Items[i].ThreadId=client2 IP对应的threadID Then TIdTcpserver.Threads.LockList.Items[i].Connection.WriteLn(Data2); } 不知道以上想法是否可行,或者不是最合适的? 另外,是不是每次调用了LockList完毕后必须调用UnLockList? 还请各位给出代码指教,谢谢! |
|
|
|
100
修改
删除
举报
引用
回复
| |