错了,发包进程是从本机的5050发出数据包,而不是目标主机的目的端口
时间: 2024-04-22 18:27:43 浏览: 141
非常抱歉,我的回答有误。以下是一段基于Python 3的多进程端口扫描程序,用于扫描指定IP地址范围内的开放端口:
```python
import socket
import multiprocessing as mp
def scan_port(ip_addr, port):
# 创建套接字对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.5)
# 尝试连接目标主机的指定端口
try:
sock.connect((ip_addr, port))
print('Port %d is open on %s' % (port, ip_addr))
except:
pass
# 关闭套接字
sock.close()
if __name__ == '__main__':
# 创建进程池
pool = mp.Pool()
# 扫描IP地址范围内的端口
for i in range(1, 255):
ip_addr = '192.168.1.%d' % i
for port in range(1, 1025):
pool.apply_async(scan_port, (ip_addr, port))
# 等待所有进程完成
pool.close()
pool.join()
```
该程序使用了多个进程进行端口扫描,每个进程尝试连接指定IP地址的指定端口,如果连接成功,则认为该端口是开放的。您可以通过修改IP地址范围和端口范围来扫描不同的主机和端口。请注意,扫描大量主机和端口可能会导致程序运行缓慢或卡死。建议适当调整IP地址范围和端口范围。
阅读全文