阻塞模式下, accept为什么返回的socket句柄不可用

captainwh 2004-04-14 08:05:02
while (1)
{
if (cClient >= MAX_CLIENT)
continue;

SOCKADDR_IN clientAddr;
int AddrLen;
SOCKET s = accept(serv, (SOCKADDR*)&clientAddr,
&AddrLen);
if (s == INVALID_SOCKET)
{
continue;
}
....

客户端已经从connect成功返回, 但服务器端始终有 s == INVALID_SOCKET, 这是怎么回事?? 判断accept操作是否成功, 应该是这样写的吧, 另外阻塞模式下accept一段时间后也会返回, 这个超时时间是怎么规定的呢?
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
captainwh 2004-04-14
  • 打赏
  • 举报
回复
接分
xstring 2004-04-14
  • 打赏
  • 举报
回复
不客气

大家共同进步。
captainwh 2004-04-14
  • 打赏
  • 举报
回复
晕, 我知道怎么回事了, 我的<<windows网络编程>>第二版上少印了一行
int AddrLen = sizeof(clientAddr); 那地方居然是行空白, 出版社害人啊
多谢xstring(麻雀)帮忙, 这么晚了还工作啊 :)
xstring 2004-04-14
  • 打赏
  • 举报
回复
照下面改再试试
while (1)
{
if (cClient >= MAX_CLIENT)
continue;

SOCKADDR_IN clientAddr;
int AddrLen = sizeof (clientAddr);
~~~~~~~~~~~~~这儿和你原来不一样
SOCKET s = accept(serv, (SOCKADDR*)&clientAddr,
&AddrLen);
if (s == INVALID_SOCKET)
{
continue;
}

18,356

社区成员

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

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