我正在使用TCP套接字发送和接收数据。我的逻辑是,如果我的服务器接收到数据(例如0值),那么就可以正常结束。但是,如果我的服务器在设置套接字关闭超时10秒后没有收到任何数据,那么我希望我的值为默认值1。我正在尝试的服务器代码如下:
import socket
TCP_IP = "0.0.0.0"
TCP_PORT = 5004
BUFFER_SIZE = 20 # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
while 1:
data = conn.recv(BUFFER_SIZE)
if not data:
break
datalist = list(data)
print("payload: %s" % datalist)
conn.send(data) # echo
else:
datalist = 1
print("default value: %s" % datalist)
但10秒后,我得到超时错误,无法使默认数据列表值为1。 请告知。其目的是,如果它不接收任何数据,则将该值设置为1
错误:
Traceback (most recent call last):
File "/home/code.py", line 15, in <module>
conn, addr = s.accept()
File "/usr/lib/python3.8/socket.py", line 292, in accept
fd, addr = self._accept()
socket.timeout: timed out
我认为您需要为客户端设置时间,因此如果它在十秒钟内发送消息,它应该保持连接,否则断开连接。情况就是这样:
以下是
server.py
代码:这是您的
client.py
代码:若您为套接字设置超时,那个么您必须处理超时异常,在这种情况下,10秒后应该发生什么
相关问题 更多 >
编程相关推荐