回路不工作插座连接()

2024-10-01 07:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们,我正在尝试一个简单的端口扫描程序,用socket.connect_ex((192.169.10.1, 80))
来验证端口是打开还是关闭的,但是我需要传递多个IP和端口,所以我使用list并使用for循环迭代它们。我只得到列表中第一个IP的结果,第二个IP没有给出正确的结果,而是总是运行elif块,可能是什么问题?有人能告诉我哪里出错了吗。在

我的代码:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

iplst = ['193.169.10.100', '193.169.10.101']
ports = [80, 80]

for i,j in zip(iplst,ports):

   result = sock.connect_ex((i,j))

   if result == 0:
      print("open" , i)
   elif result != 0:
      print("closed", i)

输出:

^{pr2}$

但我敢肯定,两个港口都是开放的


Tags: 端口程序ipforconnectsocketresultports
1条回答
网友
1楼 · 发布于 2024-10-01 07:28:06

您需要为每个(IP、端口)创建一个新的套接字:

import socket

ips = ['193.169.10.100', '193.169.10.101']
ports = [80, 80]

for ip, port in zip(ips, ports):
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   result = sock.connect_ex((ip, port))
   sock.close()
   assert result == 0

而且,这是一个很好的做法,关闭插座一旦你完成。在

相关问题 更多 >