Python 为什么我没有抓到套接字超时?

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

我不明白,为什么在下面的代码中我没有超时(即使我用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 = 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)