积极答复者
SOCKET 编程 在 Vista 下 bind 返回 SOCKET_ERROR,WSAGetLastError 返回 10049

问题
-
同样的代码,在 XP 下,无任何错误,但是在 Vista 下,就是错误,最后确定是在bind时发生的错误,错误代码10049,
代码:
SOCKADDR_IN SckAddr;
SckAddr.sin_family = AF_INET;
SckAddr.sin_port = ::htons(uSocketPort);
SckAddr.sin_addr.S_un.S_addr = ::inet_addr(lpSocketAddressA);
delete[] lpSocketAddressA;
if(::WSAAsyncSelect(m_hSocket, m_hMsgWnd, WM_TS_SOCKET_BASE, lEvent) > 0)
{
Close();
return FALSE;
}
if(::bind(m_hSocket, (const LPSOCKADDR)&SckAddr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
{
Close();
return FALSE;
}
return TRUE;bind()函数返回值为SOCKET_ERROR
此时WSAGetLastError()值为10049
但是在XP下是一切正常,恳请各位提供一个可行的解决方案。- 已移动 小鱼儿 2009年5月19日 9:52 ([Loc]From:Windows Vista 开发相关讨论)
答案
-
An invalid IP address was provided in the Bind() command
Turn off your firewall and retry- 已标记为答案 孟宪会Moderator 2011年3月25日 4:54
全部回复
-
同样的代码,在 XP 下,无任何错误,但是在 Vista 下,就是错误,最后确定是在bind时发生的错误,错误代码10049,
代码:
SOCKADDR_IN SckAddr;
SckAddr.sin_family = AF_INET;
SckAddr.sin_port = ::htons(uSocketPort);
SckAddr.sin_addr.S_un.S_addr = ::inet_addr(lpSocketAddressA);
delete[] lpSocketAddressA;
if(::WSAAsyncSelect(m_hSocket, m_hMsgWnd, WM_TS_SOCKET_BASE, lEvent) > 0)
{
Close();
return FALSE;
}
if(::bind(m_hSocket, (const LPSOCKADDR)&SckAddr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
{
Close();
return FALSE;
}
return TRUE;bind()函数返回值为SOCKET_ERROR
此时WSAGetLastError()值为10049
但是在XP下是一切正常,恳请各位提供一个可行的解决方案。 -
An invalid IP address was provided in the Bind() command
Turn off your firewall and retry- 已标记为答案 孟宪会Moderator 2011年3月25日 4:54