我在使用winsock或CSock时, 设置网络端口时常会遇到" address in use" 的错误, 但又不想逐个端口尝试. 随便问下,CSock如何获取Sock的状态。

解决方案 »

  1.   

    CSocket sockSrvr; 
    sockSrvr.Create(PORT); // Creates our server socket
    将PORT设置为0,Windows就会自己选择一个空闲的端口
      

  2.   

    CAsyncSocket::Create
    BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL );........nSocketPortA well-known port to be used with the socket, or 0 if you want Windows Sockets to select a port.
      

  3.   

    据说使用:
    CAsyncSocket::Bind
    BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL );BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen );将nSocketPort设置为0或者是lpSockAddr设置为NULL,也可以自动的让Windows选择一个空闲的端口!