linux - SOAP:无法分配请求的地址

标签 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 时,我会收到错误。

最佳答案

程序顶部的 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/

相关文章:

java - 使用 JAXB 解码日期和货币属性时出现意外值

c - 列表头 : get garbage if start parsing from second element

linux - linux下的Codeigniter PHPExcel

linux - Zookeeper zkServer.sh 无法持久启动

c++ - '"SDL.h"编译时找不到这样的文件或目录

python - Suds 数组的数组不嵌套

c - 如何检测堆栈溢出点

java - 解析 ksoap 响应

c# - 如何在 System.ServiceModel.ChannelFactory 中优化 WCF CreateFactory?

c# - 如何在 C# 中使用 VIES SOAP 服务检查欧盟增值税