SOCKET connect 产生10048错误
我使用SOCKET 连接服务器产生10048错误,不是每一次都出现这个错误有时会出现
代码如下
ATLASSERT(m_sock==INVALID_SOCKET);
int iRet=0;
//建立一个SOCKET
m_sock=socket(AF_INET,SOCK_STREAM,0);
if(m_sock == INVALID_SOCKET)
throw exception("建立SOCKET失败");
//指明客户端SOCKET(随便建立个端口)
sockaddr_in clientaddr;
clientaddr.sin_family=AF_INET;
clientaddr.sin_port=0;
clientaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
//如果在下面中产生异常要求,获取后释放资源
try
{
//邦定客户端SOCKET信息到建立的SOCKET上
iRet=::bind(m_sock,(PSOCKADDR)&clientaddr,sizeof(clientaddr));
if(iRet==SOCKET_ERROR)
throw exception("邦定IP失败!");
//建立和服务端的连接
sockaddr_in serveraddr;
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons((u_short)port);
//DNS解析
::hostent *hent=::gethostbyname(ip);
if(hent==NULL || hent->h_addr_list[0]==NULL)
throw exception("relove host failed");
u_long *p=(u_long *)hent->h_addr_list[0];
serveraddr.sin_addr.S_un.S_addr=*p;
iRet=::connect(m_sock,(PSOCKADDR)&serveraddr,sizeof(serveraddr));
if(iRet==INVALID_SOCKET)
{
char buf[256]={0};
sprintf(buf,"连接%s:%d失败.",ip,port);
throw exception(buf);
}
}
catch(exception &e)
{
close();
throw exception(e.what());
}
catch(...)
{
close();
throw exception("未知错误");
}
SOCKET 10048 是由SOCKET 被重用,
看了一些文章后删除上面代码中bind代码,由于bind会在连接时自动产生
还是有这个错误,请大家解决一下,万分感谢,会不足可以再加