我使用以下代码来检查端口是否可用:
```python import socket
def is_port_available(port): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: return s.connect_ex(('localhost', port)) != 0 ```
这个函数将会返回一个布尔值,如果端口可用则为`True`,否则为`False`。
问题在于,如果端口已经打开但未连接,则检查失败!我该如何轻松地检查端口是否可用(未监听,未连接)?
例如,端口21111(netstat的输出)->我的函数无法识别该端口未空闲。
```python import socket
def is_port_available(port): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: return s.connect_ex(('localhost', port)) != 0 ```
这个函数将会返回一个布尔值,如果端口可用则为`True`,否则为`False`。
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
Thx