这是我的接收方代码:
import socket
import time
IP = '192.168.1.99'
PORT = 8084
DEBUG = False
# Printing is only enabled in debug mode
def print_(*args):
if DEBUG:
print(*args)
def get_ms():
ms = int(round(time.time() * 1000))
return ms
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP, PORT))
s.listen(1)
conn, addr = s.accept()
while 1:
data = conn.recv(1024)
if not data: break
text, ts = data.decode('utf-8').split()
delay = get_ms() - int(ts)
response = 'ACK ' + str(text) + ' ' + str(delay) + ' ' + str(get_ms())
# Simulate server processing delay
time.sleep(0.008)
conn.send(response.encode('utf-8'))
conn.close()
运行后,我得到一个错误:
ERROR: Cannot assign requested address
如果我在相同的RPI上运行接收方和发送方代码,则不会出现此问题,但是当我尝试连接其他RPI时,会出现错误。
答案 0 :(得分:0)
程序顶部的IP地址与运行代码的计算机不匹配。
如果您包含了失败中的全部错误:
Traceback (most recent call last):
File "foo.py", line 20, in <module>
s.bind((IP, PORT))
OSError: [Errno 99] Cannot assign requested address
我们可以看到问题出在第20行,即s.bind((IP,PORT))
为了将服务器套接字绑定到特定地址,您需要提供计算机在本地具有的地址。如果您只想绑定到回送地址(因此只能从同一台计算机访问,则应使用127.0.0.1
。如果要从所有地址访问该程序,则应使用{{1} }。