设置SO_REUSEADDR后,bind失败是怎么回事
在win2000下可以成功绑定端口,而在Win2003\VISTA\win2008下就绑定失败,错误代码是10013
SOCKET sock;
sock = socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in lis_addr;
lis_addr.sin_addr.S_un.S_addr = INADDR_ANY;
lis_addr.sin_family = AF_INET;
lis_addr.sin_port = htons(bind_port);
bool isReuseaddr = TRUE;
int ret = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&isReuseaddr, 1);
ret=bind(sock, (const struct sockaddr*)&lis_addr, sizeof(sockaddr_in));
if(SOCKET_ERROR != ret)
{
sockaddr_in remote;
remote.sin_addr.S_un.S_addr = inet_addr(_pIP);
remote.sin_family = AF_INET;
remote.sin_port = htons(_port);
int len = strlen(_pBuff);
ret = sendto(sock, (const char*)_pBuff, len+1, 0, (const sockaddr*)&remote,sizeof(remote));
isReuseaddr = FALSE;
closesocket(sock);
return ret;
}
ret = WSAGetLastError();
CHAR ch[20];
sprintf(ch, "error code:%d", ret);
MessageBox(NULL, ch, "error", MB_OK);
请问在2003下如何进行端口复用???