c – 检查TCP端口是否可用(未监听或连接)

我使用以下代码来检查端口是否可用:

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

谢谢

解决方法:

您有两个错误:第一个是在if语句中为结果分配零.另一个是连接失败时connect返回-1,如果连接失败则返回非负值.

还有一个问题是,如果您设法连接,则不要关闭该连接.

上一篇:LINUX中如何查看某个端口是否被占用


下一篇:linux查看端口被占用情况