python - 接受连接的时间
问题描述
我想设置一个接受来自套接字的连接的时间。
当我使用s.accept()
它时,它会等到建立连接。我希望我的服务器在有限的时间内接受连接,然后执行程序然后再次接受连接。
伪码
Accept connection for 0.1 sec
Procedure()
Accept connection for 0.1 sec
Procedure()
.
.
.
我在 Windows 10 上使用 python 3.7.0。
解决方案
对库中示例的一个非常简单的修改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()
推荐阅读
- python - 我怎样才能让它打印用户输入的最长的名称/字符串
- python - 使多个变量等于列表中的多个值
- python - 如何在 tkinter 中更改帧,使其保持活动状态几秒钟
- c# - 如何确定 Azure Blob 是否不同于当前文件(C#/.Net Core)?
- html - 为什么 flex-basis 不适用于 flex-direction: row?
- python - 来自 Coral 开发板上 Docker 容器的全屏 GUI 应用程序
- java - 当 Maybe 为空时终止流而不抛出异常
- html - 我无法将我的 html 文件链接到另一个 html 文件
- javascript - 如何显示动态生成
- vb.net - 组合框自动填充所有绑定记录的相同值