专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

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

发布时间:2011-06-28 14:01:42 文章来源:www.iduyao.cn 采编人员:星星草
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);
    ............................
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: