socket 多线程
现在在做socket多线程,当客户端连接到服务器后,如何确定是哪一个客户端连接上的?
服务器要主动向客户端发送数据,怎样实现啊?
请大家帮帮忙!谢谢
[解决办法]
SERVERSOCKET的OnClientConnect事件里的Socket: TCustomWinSocket即为客户端Socket
ServerSocket.Socket.Connections 里存放了所有客户端Socket
ServerSocket.Socket.Connections[0].SendText('test')
建议去看下Delphi安装目录下的Demos\Internet\Chat
[解决办法]
srvrsckt1.Socket.Connections[i].RemoteAddress就是远程连接上的地址,你可以根据这个判断。
[解决办法]
[解决办法]
srvrsckt1.Socket.Connections[i].SendText('')就是往某个客户端发送数据。
[解决办法]
得你的客户端先给服务端发一次包才行,有时候服务端穿不过路由NAT,无法到达客户端
客户端上线后主动给服务端发一次包,然后保存号IP和端口号,当一个登陆包
然后在服务端循环获取已经登陆的端口号和IP,然后发包就可以了
[解决办法]
通过一个LIST来保存
[解决办法]
sock 套接字 LIST记录下
[解决办法]
对比每个客户端的sockethandle
这个比较准
用循环
但貌似这不是多线程吧
自己在服务端定义一个结构,里面存放这些信息,就方便你用