这是我的接收者代码:
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 时,我会收到错误。
最佳答案
程序顶部的 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))
为了将服务器套接字绑定(bind)到特定地址,您需要提供机器在本地拥有的地址。如果您只想绑定(bind)到环回地址(因此它只能从同一台机器访问,那么您应该使用 127.0.0.1
。如果您希望程序可以从所有地址访问,那么您应该使用 0.0.0.0
。
关于linux - SOAP:无法分配请求的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267199/