关于listen的问题 我调用监听的时候listen(s, 20);然后很多客户端断开重连,断开重连,当连接断开1W多次后,就出现客户端连接不上的情况了,connect返回的错误是10061。当我改成这样的调用:listen(s, 2000);这样重复断开连接30多W次都没问题,,,但是我觉得很奇怪,,到底是怎么回事,有没有人遇到过?按道理不应该这样的啊,, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵 楼主你把listen把第二个参数从20改成2000 改的很对啊 当accept()不能接收大量的等待接收的SOCKET时或者说存放等待接收连接的队列满时 后面的等待连接的套接字都会失败。主要你要明白listen第二个参数的意义-------------------------------然后很多客户端断开重连,断开重连,当连接断开1W多次后,就出现客户端连接不上的情况了,connect返回的错误是10061。---------------------------------------------------如果connect失败后 你休眠一小段时间继续连接 还有连接成功的可能 to 楼主: 你的服务器端使用的IO模型是IOCP吧,我在测试时得到和你类似的情况。 另外,我发现服务器端的Accept调用返回的是INVALID_SOCKET,而WSAGetLastError()返回的是10038(WSAENOTSOCK:无效套接字上的套接字操作。任何一个把SOCKET句柄当作参数的Winsock函数都会返回这个错误。它表明提供的套接字句柄无效。) 接着就发现:服务器端accept调用的那个监听Socket参数已经不是最初的值!!! 也就是说监听Socket句柄改变了,为什么?BTW:你的另外一个帖子中设计的问题我同样遇到,觉得和这里的问题有一定的联系。(http://community.csdn.net/Expert/topic/3171/3171912.xml?temp=.316723) MFC单文档中使输出的文字的位置随着窗口大小的改变而改变 面试四天了(求分析) 请教关于窗口消息机制的问题 我的困惑 Compuware DevPartner for Visual C++ 怎么用? 初级游戏开发题 怎样将xml的节点当作根来操作? ??如何创建一种字体,而该字体是宋体(主要问‘宋体’如何表示) 哪里能买到D.Kruglinskide 《Visual C++内幕》第五版 组件可以替换吗 求助:vc如何打开html文件? CCmdUI::SetRadio()和SetCheck有什么区别呀?看不懂MSDN说的。
当accept()不能接收大量的等待接收的SOCKET时或者说存放等待接收连接的队列满时 后面的等待连接的套接字都会失败。
主要你要明白listen第二个参数的意义-------------------------------
然后很多客户端断开重连,断开重连,当连接断开1W多次后,就出现客户端连接不上的情况了,connect返回的错误是10061。
---------------------------------------------------
如果connect失败后 你休眠一小段时间继续连接 还有连接成功的可能
你的服务器端使用的IO模型是IOCP吧,我在测试时得到和你类似的情况。
另外,我发现服务器端的Accept调用返回的是INVALID_SOCKET,而WSAGetLastError()返回的是10038(WSAENOTSOCK:无效套接字上的套接字操作。任何一个把SOCKET句柄当作参数的Winsock函数都会返回这个错误。它表明提供的套接字句柄无效。)
接着就发现:服务器端accept调用的那个监听Socket参数已经不是最初的值!!!
也就是说监听Socket句柄改变了,为什么?
BTW:你的另外一个帖子中设计的问题我同样遇到,觉得和这里的问题有一定的联系。
(http://community.csdn.net/Expert/topic/3171/3171912.xml?temp=.316723)