3

次のコードを使用して、ポートが使用可能かどうかを確認します。

bool ClassA::CheckPortTCP(short int dwPort , char *ipAddressStr)  
{  
    struct sockaddr_in client;         
    int sock;   

    client.sin_family = AF_INET;  
    client.sin_port = htons(dwPort);  
    client.sin_addr.S_un.S_addr = inet_addr(ipAddressStr);      

    sock = (int) socket(AF_INET, SOCK_STREAM, 0);  

    int result = connect(sock, (struct sockaddr *) &client,sizeof(client)); 

    // change to result == 0 -> failure in writing code too quick ;-)
    if (result = 0) return true; // port is active and used
    else return false; 
}  

問題は、ポートが開いているが接続されていない場合、チェックが失敗したことです! ポートが使用可能であること (リッスンしていない、接続されていないこと) を簡単に確認するにはどうすればよいですか?

例: ポート 21111 (netstat の出力) -> 私の関数はポートが空いていないことを認識しません

TCP    0.0.0.0:21111          xxxxDUMMYxxxx:0       LISTENING

どうも

4

2 に答える 2