读书人

C++Builder 调用 WSAAsyncSelect出错

发布时间: 2012-03-20 14:01:11 作者: rapoo

C++Builder 调用 WSAAsyncSelect出错,怎么回事?
if(bind(server_socket,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{
ShowMessage("服务器套接字绑定失败");
WSACleanup();
return 0;
}

ShowMessage("服务器套接字绑定成功");
WSAAsyncSelect(server_socket,Form1->Handle,WM_SOCKET,FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE);

[解决办法]

C/C++ code
    WORD wVersionRequested;     WSADATA wsaData;     int err;     wVersionRequested = MAKEWORD( 2, 2 );     err = WSAStartup( wVersionRequested, &wsaData );     if ( err != 0 )     {         return;     }     if ( LOBYTE( wsaData.wVersion ) != 2 ||         HIBYTE( wsaData.wVersion ) != 2 )     {         WSACleanup( );         return;     }     char hostname[256];     gethostname(hostname,sizeof(hostname));                         HOSTENT*hos=gethostbyname(hostname);                             String CS=inet_ntoa(*(struct in_addr*)hos->h_addr_list[0]);       SOCKET serverSocket;     serverSocket = socket(AF_INET, SOCK_STREAM, 0);     SOCKADDR_IN addr;     addr.sin_family = AF_INET;     addr.sin_port = htons(6000);     addr.sin_addr.S_un.S_addr = inet_addr(CS);         bind(serverSocket, (SOCKADDR*)&addr, sizeof(SOCKADDR));     //注册网络事件     if(SOCKET_ERROR == WSAAsyncSelect(serverSocket, m_hWnd, WM_NETMESSAGE, FD_ACCEPT|FD_CLOSE))     {         MessageBox("注册事件出错!");         closesocket(serverSocket);         WSACleanup();         return;     }     listen(serverSocket, 5);    ............................ 

读书人网 >C++ Builder

热点推荐