有很多ip和端口,需要用类似与telnet的方式检测一下端口的连通性

时间:2021-10-16 15:21:47
import socket
import os

file_obj = open('ip.txt')   

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    


for line in file_obj:
ip = line.split()[0]
p = int(line.split()[1])
try:
s.connect((ip,p))
s.close()
print ip+":"+str(p)+" open"
except:
print ip+":"+str(p)+" close"
file_obj.close()


代码如上
运行结果如下:
C:\pycode>python 1111.py
Began to detect...
127.0.0.1:8080 close
127.0.0.1:80 open
127.0.0.1:80 close
127.0.0.1:80 close
192.168.1.1:80 close

同样是127.0.0.1:80  为什么第一个可以之后就不行了呢?

3 个解决方案

#1


s.close()之后,就不能再重复用了。把 s=...放到循环体内。

import socket
import os

file_obj = open('ip.txt')   

for line in file_obj:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = line.split()[0]
p = int(line.split()[1])
try:
s.connect((ip,p))
s.close()
print ip+":"+str(p)+" open"
except:
print ip+":"+str(p)+" close"
file_obj.close()


#2


python有什么比较好的调试工具呢?

#3


看你在什么下编程,在eclipse下面打断点和其他是一样的。

#1


s.close()之后,就不能再重复用了。把 s=...放到循环体内。

import socket
import os

file_obj = open('ip.txt')   

for line in file_obj:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = line.split()[0]
p = int(line.split()[1])
try:
s.connect((ip,p))
s.close()
print ip+":"+str(p)+" open"
except:
print ip+":"+str(p)+" close"
file_obj.close()


#2


python有什么比较好的调试工具呢?

#3


看你在什么下编程,在eclipse下面打断点和其他是一样的。