首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++Builder 调用 WSAAsyncSelect出错,咋回事

2012-03-20 
C++Builder 调用 WSAAsyncSelect出错,怎么回事?if(bind(server_socket,(LPSOCKADDR)&sin,sizeof(sin))SO

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);    ............................ 

热点排行