accept的时候,加上地址获取总是失败是什么原因?
源代码如下:
int iSize = 0;
SOCKET Client;
SOCKADDR_IN ClientAddr;
memset(&ClientAddr,0,sizeof(SOCKADDR_IN));
//创建SOCKET
m_ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_ListenSocket==INVALID_SOCKET)
{
LogInfo("创建监听SOCKET失败!");
return -1;
}
else{
LogInfo("创建监听SOCKET成功!");
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSock.sin_family = AF_INET;
addrSock.sin_port = htons(9110);
if(SOCKET_ERROR==bind(m_ListenSocket, (SOCKADDR*)&addrSock, sizeof(SOCKADDR)))
{
LogInfo("监听端口绑定失败!");
return -1;
}
/*unsigned long cmd = 1;
int nStatus=ioctlsocket(m_ListenSocket, FIONBIO, &cmd);*/
// 相关初始化处理, 创建监听套接字
listen(m_ListenSocket, 5);
while(1)
{
//下面这一句出错
Client = accept(m_ListenSocket, (SOCKADDR*)&ClientAddr, &iSize);
//Client = accept(m_ListenSocket, NULL, NULL); //换成这一句就不出错
if(Client == INVALID_SOCKET)
{
int r = WSAGetLastError();
return -1;
}
CreateThread(NULL, NULL, Thread_RecvData, (LPVOID)Client, 0, NULL);
}