【问题标题】:Connection refused between a Python server and a Java clientPython 服务器和 Java 客户端之间的连接被拒绝
【发布时间】:2013-03-27 12:45:35
【问题描述】:

问题: 我想在 Python 服务器和 Java 客户端之间建立连接。客户端引发异常:

java.net.ConnectException:连接被拒绝:连接

服务器代码:

print('MOTD/name system initialized!')
        global people
        welcome = socket.socket()
        welcome.bind((socket.gethostname(), 31123))
        while True:
            welcome.listen(1)
            w, nouse = welcome.accept()
            ...
            w.send(m.strip().encode())
            w.close()

客户端代码:

Socket welcomesocket = new Socket("localhost", 31123);
BufferedReader motd = new BufferedReader(new InputStreamReader(welcomesocket.getInputStream()));
servs.set(i, motd.readLine());
welcomesocket.close();

问题必须在Java,Python - Python连接在相同的情况下工作正常。

【问题讨论】:

  • 能否也展示您的 Python 客户端代码的相关部分?
  • 我有,在“服务器代码”中

标签: java sockets exception


【解决方案1】:

一个问题是python服务器正在绑定并接受与服务器主机名对应的IP地址,但客户端正在尝试连接到“localhost”;即环回 IP 地址。

客户端需要使用与服务器绑定的主机名/IP 地址相同的主机名/IP 地址。如果客户端和服务器在不同的机器上,那么你根本不能使用“localhost”。 (“localhost”名称通常表示127.0.0.* 环回地址。顾名思义,到环回地址的连接“环回”到您要连接的主机;即环回连接不会离开客户端的机器/虚拟。

【讨论】:

  • 能否详细说明修复方法?
【解决方案2】:

这似乎真的是一个连接问题,而不是真正的“Java”。也许有关您的环境的更多信息会有所帮助。

同时:

如果您有 telnet 客户端,请尝试像“telnet localhost 31123”一样运行它,这应该允许连接。否则你连接的服务器有问题。

问候

【讨论】:

  • 正如我已经说过的,服务器工作正常,考虑到 Java 程序是(完全工作的)Python 聊天的一个端口。
  • 嗯,根据另一个答案,问题现在应该解决了。这是关于如何连接到 phyton 服务器的问题。也许使用带有端口的真实机器名称(或 IP)。这就是为什么我要求提供有关环境的更多信息,这与其说是 Java 错误,不如说是配置问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多