Python 为什么我没有抓到套接字超时?
我不明白,为什么在下面的代码中我没有超时(即使我用settimeout设置它,我也看不到异常被捕获):Python 为什么我没有抓到套接字超时?,python,sockets,timeout,Python,Sockets,Timeout,我不明白,为什么在下面的代码中我没有超时(即使我用settimeout设置它,我也看不到异常被捕获): 超时异常不是套接字。错误。因为不会引发超时exceptions@t.m.adam:更好@JamesKPolk是的,在使用Python套接字时,您会了解这些事情connect_ex是一个非常方便的功能。 import socket HOST = 'x.x.x.x' open_ports = [] closed_ports = [] def scan(PORT): sock_tcp
超时异常不是套接字。错误。因为不会引发超时exceptions@t.m.adam:更好@JamesKPolk是的,在使用Python套接字时,您会了解这些事情
connect_ex
是一个非常方便的功能。
import socket
HOST = 'x.x.x.x'
open_ports = []
closed_ports = []
def scan(PORT):
sock_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock_tcp.settimeout(0.5)
SERVER_ADDR = (HOST, PORT)
try:
portStatusTCP = sock_tcp.connect_ex(SERVER_ADDR)
if portStatusTCP==0:
open_ports.append(PORT)
print(str(PORT)+' is OPEN')
else:
closed_ports.append(PORT)
print(str(PORT)+' is CLOSED')
except socket.error as socketerror:
print("ERROR"+socketerror)
sock_tcp.close()
for PORT in range(15,25):
print('scanning port: '+str(PORT))
scan(PORT)
print(open_ports)
print(closed_ports)