import socket import threading IP_ADDRESS = '192.168.1.1' PORT = 13400 EID = ['12345678', '87654321'] def send_request(eid): request = f'\x00\x00\x00\x1f{eid}\x00' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((IP_ADDRESS, PORT)) s.sendall(request.encode()) def timeout(): # 在这里执行超时逻辑 print(f'{eid} 请求超时') timer = threading.Timer(10.0, timeout) timer.start() while True: response = s.recv(1024) if response: # 在这里处理响应结果 print(f'{eid} 收到响应') timer.cancel() break for eid in EID: send_request(eid) 上面这个函数如果超时函数timeout需要带参数 需要怎么修改
时间: 2024-02-14 21:08:52 浏览: 190
可以将`eid`作为参数传递给`timeout`函数。具体修改如下:
```
import socket
import threading
IP_ADDRESS = '192.168.1.1'
PORT = 13400
EID = ['12345678', '87654321']
def send_request(eid):
request = f'\x00\x00\x00\x1f{eid}\x00'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP_ADDRESS, PORT))
s.sendall(request.encode())
def timeout(eid):
# 在这里执行超时逻辑
print(f'{eid} 请求超时')
timer = threading.Timer(10.0, timeout, args=[eid])
timer.start()
while True:
response = s.recv(1024)
if response:
# 在这里处理响应结果
print(f'{eid} 收到响应')
timer.cancel()
break
for eid in EID:
send_request(eid)
```
这样修改后,`timeout`函数就可以接受一个参数`eid`,并且在调用`threading.Timer`时,将`eid`作为参数传递给`timeout`函数。
阅读全文