我试图制作一个简单的客户端-服务器通信应用程序,但遇到一个问题-监听时出现错误10022(无效参数)。
WSADATA wsaData;
int iResult;
sockaddr_in addr;
SOCKET sock, client;
addr.sin_family = AF_INET;
addr.sin_port = htons( 25565 );
addr.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" );
iResult = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
if( iResult )
{
std::cout << ( WSAGetLastError( ) );
_getch( );
}
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if( sock == INVALID_SOCKET )
{
std::cout << ( WSAGetLastError( ) );
_getch( );
}
iResult = listen( sock, SOMAXCONN );
if( iResult )
{
std::cout << ( WSAGetLastError( ) );
_getch( );
}
答案 0 :(得分:2)
在listen
之前,您需要bind
套接字上要监听的端口。
您似乎已经建立了包含bind
必要信息的地址结构,因此请调用bind(sock, &addr, sizeof(addr))
并在调用listen
之前执行适当的错误检查。
答案 1 :(得分:1)