欢迎各位兄弟 发布技术文章
这里的技术是共享的
在Python中,你可以使用socket
模块来编写一个简单的脚本,测试某个IP地址上的特定端口是否连通。下面是一个基础示例:
Python1 import socket
2
3 def test_connection(ip, port):
4 try:
5 # 创建一个TCP套接字
6 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
7
8 # 设置超时时间,防止长时间等待
9 sock.settimeout(5) # 例如设置为5秒超时
10
11 # 尝试连接到指定的IP和端口
12 sock.connect((ip, port))
# msg = s.recv(1024) 有这一行代码 似乎 80 端口就有问题
13
14 # 如果成功连接到这里,则端口是开放的
15 print(f"连接成功,{ip}:{port}端口是开放的。")
16
17 # 关闭套接字
18 sock.close()
19
20 except socket.timeout:
21 print(f"连接超时,{ip}:{port}可能没有响应或端口未开放。")
22
23 except socket.gaierror:
24 print(f"无法解析主机名:{ip}")
25
26 except socket.error as err:
27 # 其他错误,如连接被拒绝
28 print(f"连接错误:{err}")
29 if 'Connection refused' in str(err):
30 print(f"{ip}:{port}端口未开放。")
31
32 finally:
33 # 确保套接字关闭
34 if sock is not None:
35 sock.close()
36
37 # 使用函数测试一个IP和端口
38 test_connection('192.168.1.1', 80)
这个脚本会尝试连接到指定的IP地址和端口,如果连接成功则表明端口是开放的,否则根据不同的异常来判断可能是连接超时、无法解析主机名,或者是连接被拒绝(在这种情况下通常意味着端口未开放)。请注意,在实际应用中,尤其是大规模或持续的端口扫描时,应遵循适当的法律法规,并确保已获得必要的权限。