Winsock连接多客户,长时间无消息会自动断开?如何解决? 官户多的话,用发消息保持连接的方式会造成数据阻塞,实在想不出来好办法,哪位有好的方法

解决方案 »

  1.   

    那就用UDP试下
      

  2.   

    断了让客户端自动重连啊,是TCP协议的吧?断开的时候客户端也应该触发了Close事件的用发消息保持连接的方式,你可以从客户端不定时向发服务端发消息,这样如果都数据阻塞的话,你应该要增加服务器了。
      

  3.   

    定时检测state状态,close表示关闭,关闭就自动connect即可
      

  4.   

    服务端和客户端都要定时发送心跳包验证连接是否有效
    tcp长时间无消息会自动断开是路由的设置导致的 部分路由默认的设置是这样的
      

  5.   

    用服务端发令牌许可,就能限定最大连接数n。
    a)一个固定的端口用来登记客户端,客户端启动时发一个上线消息、然后马上关闭连接。服务端收到后记在客户端列表中。
    b)开有限的n个端口用来接受客户端消息。
    c)服务端开定时器,如果有空闲端口,就从客户端列表中取下一个(按环状循环),分配给端口,发送许可消息。
    d)客户端收到许可后,连接指定端口,有数据就发数据、没数据就发在线回复,关闭连接。
    e)服务端按常规处理数据或在线回复,标记端口为空闲,进入步骤c。
    f)服务端如果一定时间后没有收到回复,判断该客户端离线,从列表中删除,标记端口为空闲,进入步骤c。