首页 > 解决方案 > 接受连接的时间

问题描述

我想设置一个接受来自套接字的连接的时间。

当我使用s.accept()它时,它会等到建立连接。我希望我的服务器在有限的时间内接受连接,然后执行程序然后再次接受连接。

伪码

Accept connection for 0.1 sec
Procedure()
Accept connection for 0.1 sec
Procedure()
.
.
.

我在 Windows 10 上使用 python 3.7.0。

标签: pythonpython-3.xnetworking

解决方案


对库中示例的一个非常简单的修改socket

import socket

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
TIMEOUT = 0.1

while True:
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.bind((HOST, PORT))
            s.listen(1)
            s.settimeout(TIMEOUT)
            conn, addr = s.accept()
            with conn:
                print('Connected by', addr)
                data = conn.recv(1024)
                if data:
                    whatever_procedure(data)
    except socket.timeout:
        print(f'Timeout occurred after {TIMEOUT}')
        your_procedure_in_case_timeout()

推荐阅读