为什么ACCEPT错误?56585785

ghhhpy 2002-10-19 11:58:13
WSADATA wsaData;
int fromlen,retval;
char msg[100];
memset(msg,0,sizeof(msg));
SOCKET listen_socket,msg_socket;
sockaddr_in local,from;
if(WSAStartup(0x202,&wsaData)!=0)
{AfxMessageBox(" socket begin error");
WSACleanup();
return ;
}
listen_socket=socket(AF_INET,SOCK_STREAM,0);
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_port=htons(4444);
if(bind(listen_socket,(sockaddr*)&local,sizeof(local))!=0)
{AfxMessageBox("socket bind error");
WSACleanup();
return ;
}/////////////////////////////////////////////////////
if(listen(listen_socket,2)!=0)
{AfxMessageBox("socket listen error");
WSACleanup();
return ;
}
if((msg_socket=accept(listen_socket,(sockaddr*)&from,&fromlen))==INVALID_SOCKET)
{int i=WSAGetLastError();
WSACleanup();
AfxMessageBox("ACCEPT error");
}
retval=recv(msg_socket,msg,100,0);
m_edit1.Format("%s", msg);
UpdateData(false);
closesocket(msg_socket);
closesocket(listen_socket);
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
everandforever 2002-10-21
  • 打赏
  • 举报
回复
If the socket is marked as nonblocking and no pending connections are present on the queue, accept returns an error as described in the following.
hohoo 2002-10-21
  • 打赏
  • 举报
回复
同意 COOL_Fire_(GodIsDead)
whydoyoucare 2002-10-21
  • 打赏
  • 举报
回复
to everforever:

好像不是这个原因吧?accept在没有连接到来的时候应该一直阻塞才对!


这段程序出错的的原因是fromlen没有赋值!在accept函数前面加上
fromlen = sizeof(from);
就可以了!调试通过!!
everandforever 2002-10-19
  • 打赏
  • 举报
回复
为什么ACCEPT错误,你刚LISTEN就马上ACCEPT,ACCEPT一定要有对方来连接才能调用,否则当然失败。不会用SOCKET还是先看书吧。

18,357

社区成员

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

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