listen函数的第二个参数int backlog可以为0啊,为什么?

yum3334 2012-02-22 02:05:11
我用listen(sock,0)监听,accept也能得到链接什么都没有。
可是,msdn的解释似乎backlog得是一个正数。这是为什么呢? 难道backlog参数根本没用?

listen
The listen function places a socket in a state in which it is listening for an incoming connection.

int listen(
SOCKET s,
int backlog
);

Parameters
s
[in] Descriptor identifying a bound, unconnected socket.
backlog
[in] Maximum length of the queue of pending connections. If set to SOMAXCONN, the underlying service provider responsible for socket s will set the backlog to a maximum reasonable value. There is no standard provision to obtain the actual backlog value.
...全文
256 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-02-22
  • 打赏
  • 举报
回复
backlog是连接请求队列的最大长度。
1.在WinSock1.1中最大值5。如果backlog小于1,则backlog被置喂1;若backlog大于SOMAXCONN(定义在winsock.h中,值为5),则backlog被置为SOMAXCONN。
2.在WinSock2中,没有制定具体值,它由服务提供者决定
3.有时候backlog设置很小,这时我们接进多少台机器都没问题是因为服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧