java - Python 服务器和 Java 客户端之间的连接被拒绝

标签 java sockets exception

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

java.net.ConnectException: Connection refused: connect

服务器代码:

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服务器正在绑定(bind)并接受与服务器主机名对应的IP地址,但客户端正在尝试连接到“localhost”;即环回 IP 地址。

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

关于java - Python 服务器和 Java 客户端之间的连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15659132/

相关文章:

c - tcp时间戳,记录返回回复所需的时间

Java客户端服务器发送字节接收器无限期监听

console - 如何将控制台与 Java 应用程序关联起来?

Node.js HTTP 无法与 Raspberry Pi 上的 Unix Socket 建立连接

python - 为什么 exc_traceback 返回 None

c++ - 禁用 MSVC 的异常

javascript - 在引导的 Firefox 扩展中设置全局错误处理程序

java - 将读取和解释的数据从数据库传输到网页的最佳方式是什么

java - swing JTree、JTable 或 JList 中的 Activity 元素

java - NetBeans MySQL 驱动程序连接错误 dist Jar 文件