应该是大家常常遇到的问题
一调试通过就给分!

解决方案 »

  1.   

    通常bind时会返回WSAEADDRINUSE就是端口已经被占用了。
      

  2.   

    调用bind函数,返回WSAEADDRINUSE 则是端口被占用了
      

  3.   

    CSocket::connect(CString IP, UINT nport)IP为IP地址的字符串格式,nport 为端口号
      

  4.   

    m_pListen = new CListenSocket( this );
    if ( m_pListen )
    {
    if ( m_pListen->Create( 80, SOCK_STREAM, FD_ACCEPT ) )  bOk = m_pListen->Listen(); if ( !bOk )
    {
    CString strMsg;
    int nErr = m_pListen->GetLastError();
    if ( nErr == WSAEADDRINUSE )
    strMsg.Format( IDS_LISTEN_INUSE, m_uPort );
    else
    strMsg.Format( IDS_LISTEN_ERROR, m_uPort );
                                 //80,如果被占用,Error!!!!!!!!
    AfxMessageBox( strMsg, MB_OK|MB_ICONSTOP );
    m_pListen->Close();
    delete m_pListen;
    m_pListen = NULL;
    }
    }
      

  5.   

    NOTE:
    IDS_LISTEN_INUSE   =>  Port 80 is already in use!
      

  6.   

    Create一个CSocket,然后Listen一下不成功就说明被占用了
      

  7.   

    同学说好象用getservbyport()可以,
    可是就是不会用,不知道有没有实际的例子?
      

  8.   

    同学说用getservbyport()好象可以
    可是不会用
    有没有人成功过????
      

  9.   

    我再讲清楚一点吧
    上面所有人说的方法都必须同时建立一个套接字
    如果只是想判断某个端口是否被占用,就必须不断的建立套接字,显然是很不明智的
    就没有合适的方法么?sigh
      

  10.   

    看来没人知道,结贴送分好了, sigh