debug时 listen异常
编程环境 windows 2003sp1 vc2005
First-chance exception at 0x7c815dea in socket.exe: 0x000006D9: 终结点映射器中没有更多的终结点可用
代码
出错浓缩后的代码
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main(int argc,char** argv)
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(3333);
addr.sin_addr.s_addr = htonl( INADDR_ANY );
bind(s,(sockaddr*)&addr,sizeof(addr));
listen(s,5); // <-tester.exe 中的 0x7c815dea 处最可能的异常: 0x000006D9: 终结点映射器中没有更多的终结点可用。 。
int addrlen=sizeof(addr);
accept(s,(sockaddr*)&addr,&addrlen);
return 0;
}
问题点数:50、回复次数:4Top
1 楼nuaawenlin(飘人)回复于 2006-06-03 20:40:38 得分 0
int rt = bind(s,(sockaddr*)&addr,sizeof(addr));
判断rt的返回值,如果bind失败,listen会出现异常的
Top
2 楼duoduoliang()回复于 2006-06-03 21:52:07 得分 0
养成良好编码风格很重要。调用函数检查RETURN结果或捕捉异常是良好的风格。Top
3 楼cnhello(抄人1号)回复于 2006-06-08 14:43:54 得分 0
我检查了,返回值都是正确,这个例子是简写的,而且在windows 2000下调试也不会出现,那位大侠有空在我说的环境里试验一下就知道了
Top
4 楼cnhello(抄人1号)回复于 2006-06-08 14:45:22 得分 0
绑定地址是127。0。0。1时也不会出异常Top




