现在在做socket多线程,当客户端连接到服务器后,如何确定是哪一个客户端连接上的?
服务器要主动向客户端发送数据,怎样实现啊?
请大家帮帮忙!谢谢

解决方案 »

  1.   

    请帮帮忙,用的SERVERSOCKET
    客户端连接后生成一个线程,怎么确定这个连接对应服务器中的某一用户?
    如果服务器向客户端请求数据,怎么发送啊?
      

  2.   

    SERVERSOCKET的OnClientConnect事件里的Socket: TCustomWinSocket即为客户端Socket
    ServerSocket.Socket.Connections 里存放了所有客户端SocketServerSocket.Socket.Connections[0].SendText('test')
    建议去看下Delphi安装目录下的Demos\Internet\Chat
      

  3.   

    srvrsckt1.Socket.Connections[i].RemoteAddress就是远程连接上的地址,你可以根据这个判断。
      

  4.   

    srvrsckt1.Socket.Connections[i].SendText('')就是往某个客户端发送数据。
      

  5.   

    得你的客户端先给服务端发一次包才行,有时候服务端穿不过路由NAT,无法到达客户端
    客户端上线后主动给服务端发一次包,然后保存号IP和端口号,当一个登陆包
    然后在服务端循环获取已经登陆的端口号和IP,然后发包就可以了
      

  6.   

    sock  套接字 LIST记录下
      

  7.   

    对比每个客户端的sockethandle
    这个比较准
    用循环但貌似这不是多线程吧自己在服务端定义一个结构,里面存放这些信息,就方便你用