本帖最后由 oyljerry 于 2011-06-25 16:46:55 编辑

解决方案 »

  1.   

    connect在阻塞模式下都是有超时的,在超时后连不上就会返10061错误,服务器需要在超时时间内调用accept
      

  2.   

    一个线程在无线的死循环调用accept,accept上来的连接放到其他线程里处理
      

  3.   


    但是循环的一次 也是要消耗时间的,万一 一次循环到1半的时候来个 connect 呢
      

  4.   

    connect在阻塞模式下,如果服务器没有响应的话,会出现阻塞现在,时间大概是75s,之后会返回失败。
      

  5.   

    accept的功能并不是建立连接,而是从当前连接的等待队列中获取一条连接
    所以即使不accept客户端的connect也会成功的,直到连接队列满为止,这个队列的大小是由listen的中的参数确定的
      

  6.   

    不accept也能connect成功。
    回应客户端的建立连接报文是TCP协议栈负责的,而应用程序的accept只是从系统协议栈已连接的socket队列中拿走一个使用
      

  7.   

    处理上次的事情?  循环accept,处理的时候新建线程,交给线程处理就好了,不过你不accept的话,conenct也不会失败,因为你前面不应该还有个listen吗