SOAP:无法分配请求的地址

时间:2018-07-10 13:57:38

标签: linux soap

这是我的接收方代码:

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时,会出现错误。

1 个答案:

答案 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} }。