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

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