如何在超时套接字连接Python后调用异常?

时间:2018-02-23 00:30:59

标签: python python-3.x sockets

我有套接字连接:

# Create a TCP/IP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # Bind the socket to the address given on the command line
    sock.connect((host, port))

那么,如何设置超时参数并在超时到来时调用异常?

login = login.encode()
        sock.sendall(login)
        sock.recv(buf).decode("utf-8")

1 个答案:

答案 0 :(得分:0)

您可以参考套接字文档:

socket.settimeout(value)

" 在阻止套接字操作时设置超时。 value参数可以是表示秒的非负浮点数,也可以是None。如果给出非零值,则如果在操作完成之前已超过超时时间段值,则后续套接字操作将引发超时异常。如果给出零,则套接字处于非阻塞模式。如果给出None,则套接字将进入阻塞模式。

所以你可以用:

指定它
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3) # 3 Seconds timeout.

这样,当连接超过3秒时,会抛出 socket.timeout ,并且您可以在try-catch块中处理捕获socket.timeout的异常。