那应该是哪个地方问题?代码是微软 完成端口的例子。本机测试的话问题不大,基本没发现。外网测试,经常出现这个问题,服务端异步完成端口,客户端异步同步都测试了。一遇到这情况,服务端客户端没变化,都是链接中,一直都处于receive中。服务端在内网,用的路由的端口映射,是不是他的问题呢?

解决方案 »

  1.   


    那应该是哪个地方问题?代码是微软 完成端口的例子。本机测试的话问题不大,基本没发现。外网测试,经常出现这个问题,服务端异步完成端口,客户端异步同步都测试了。一遇到这情况,服务端客户端没变化,都是链接中,一直都处于receive中。服务端在内网,用的路由的端口映射,是不是他的问题呢?在 MSDN 上, M$ 只提供了一个不完整的例子,而且这个例子仅仅在最理想的情况下能够比较正常地工作
    so, 楼主应该还是在某个地方抄回来的,有问题的代码。
      

  2.   

    要做路由器映射的话,加个心跳吧
    跟NAT穿透一个道理
    路由器长期没有接到数据,路由表里可能会动态清理了
      

  3.   


    直接msdn的原版代码,只是加了点逻辑处理。刚测试过,在127.0.0.1上挂了三个小时,没发现异常。但用路由映射,就会卡在receive上,关闭服务端,过好几分钟服务端才反应过来。关闭服务端,客户端还是卡在receive接收上面。查看电脑的链接状态,发现监听端口也一直监听着,客户端也一直处于链接状态