本帖最后由 dreameronair 于 2010-03-24 13:14:24 编辑

解决方案 »

  1.   

    客户端端口不变?你在客户端绑定端口?那你设置了SO_REUSEADDR吗?另外,你要考虑下TIME_WAIT,可以通过设置SO_LINGER来实现
      

  2.   

    重新建立socket之前已经closesocket了啊,还需要SO_REUSEADDR吗?而且重新bind也成功了。设置的是非阻塞的socket。现在的情况是过一段时间就可以connect成功了,是不是网线重连后需要一段等待时间?
      

  3.   


    Mark,好像我的程序在部分机器也出现这个问题!
      

  4.   

    客户端判断超时closesocket,重新建立socket
    程序逻辑上你重复判断了吗?
      

  5.   

    connect成功而没有收到数据包?过一分钟之后才收到?一分钟之内没有做任何修改吗?
      

  6.   

    因为connect函数没有发出任何的数据包()
    答:这只是你的应用层没发送数据,但内核的tcp/ip协议栈肯定要发送syn, ack等包,去读读tcp的三次握手过程吧。
      

  7.   

    你这样监测看看:
      1、在重复3和4的过程中看每次的socket的句柄是否一样
      2、在服务器端,如果connect后,服务器的accept的句柄是否一样?