WSADATA wsd;
WSAStartup (MAKEWORD (2, 2), &wsd);sockaddr_in addr;
memset(&addr, 0, sizeof(sockaddr_in));
sSocket = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in addr;
// Address family Internet
addr.sin_family = AF_INET;
// Assign port 'port' to this socket
addr.sin_port = htons (uiPort);
if (lpszIp == NULL)
{
// No destination
addr.sin_addr.s_addr = htonl (INADDR_ANY);
}
else
{
addr.sin_addr.s_addr = inet_addr(lpszIp);
}
// 绑定IP及端口
if (bind (sSocket, (LPSOCKADDR) &addr, sizeof (addr)) == SOCKET_ERROR)
{
// 关闭套接字
Close(sSocket);
return SOCKET_ERROR;
}
以上代码是在创建Socket侦听时,绑定IP地址,以上代码在一个叫NDK的动态库中。
目前有另一个DLL,需要调用NDK库建立侦听。但一到绑定时,就返回10057错误,不知道为什么?如果是直接用MFC对话框程序调用NDK库,就成功。
WSAStartup (MAKEWORD (2, 2), &wsd);sockaddr_in addr;
memset(&addr, 0, sizeof(sockaddr_in));
sSocket = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in addr;
// Address family Internet
addr.sin_family = AF_INET;
// Assign port 'port' to this socket
addr.sin_port = htons (uiPort);
if (lpszIp == NULL)
{
// No destination
addr.sin_addr.s_addr = htonl (INADDR_ANY);
}
else
{
addr.sin_addr.s_addr = inet_addr(lpszIp);
}
// 绑定IP及端口
if (bind (sSocket, (LPSOCKADDR) &addr, sizeof (addr)) == SOCKET_ERROR)
{
// 关闭套接字
Close(sSocket);
return SOCKET_ERROR;
}
以上代码是在创建Socket侦听时,绑定IP地址,以上代码在一个叫NDK的动态库中。
目前有另一个DLL,需要调用NDK库建立侦听。但一到绑定时,就返回10057错误,不知道为什么?如果是直接用MFC对话框程序调用NDK库,就成功。
NDK.dll是静态加载。执行到bind时,返回值为-1,获取WSAGetLastError的错误码为:0
由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。看一下addr
现在的情况是:
执行到bind时,返回值为-1,获取WSAGetLastError的错误码为:0
第二,bind不应该出现这个错误,10057是怎么来的?用写日志的方式输出错误
if (sSocket == INVALID_SOCKET)
{
return WSAGetLastError();
}
// ...
if (bind(sSocket, (LPSOCKADDR)&addr, sizeof(addr)) != 0)
{
int errCode = WSAGetLastError();
closesocket(sSocket);
return errCode;
}
// ...
return 0;
第二,bind不应该出现这个错误,10057是怎么来的
由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。 看一下addr