java - Java 客户端和 Python 服务器之间的 Socket 消息传递

标签 java python sockets

我尝试在 Java 客户端和 Python 服务器之间创建一个 Socket 消息发送器。它的作用是从客户端向服务器发送消息(“Testdata”)并将其打印出来。但是在输入并从服务器向客户端发送消息后,我没有从客户端得到任何输出。客户端“卡住”并且必须终止。

我的客户端输入有什么问题?

<小时/>

终端服务器:

py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..

终端客户端:

java socketClient   
Testdata
<小时/>

Python 服务器:

import socket

def socket_server():
    host = "127.0.0.1"
    port = 35100

    server_socket = socket.socket()
    server_socket.bind((host, port))
    server_socket.listen(2)
    conn, address = server_socket.accept()
    print("Connection from: " + str(address))
    while True:
        data = conn.recv(1024).decode()
        if not data:
            break
        print("from connected user: " + str(data))
        data = input('> ')
        conn.send(data.encode())
        print("send data...")
    conn.close()

if __name__ == '__main__':
    socket_server()

Java 客户端:

private static void socketTest(){
    String hostname = "127.0.0.1";
    int port = 35100;

    try (Socket socket = new Socket(hostname, port)) {
        OutputStream output = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(output, false);

        BufferedReader input =
                new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
        Scanner in = new Scanner(System.in);
        String text;

        do {
            text = in.nextLine();
            writer.print(text);
            writer.flush();
            System.out.println("from server: " + input.readLine());
        } while (!text.equals("exit"));

        writer.close();
        input.close();
        socket.close();
    }
}

最佳答案

这是因为 python 消息没有像 @carlos palmas 在 this 中所说的那样以 \r\n 显式结束。回答。

关于java - Java 客户端和 Python 服务器之间的 Socket 消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59819488/

相关文章:

java - 远程主机强行关闭连接 - C# 客户端、Java 服务器

java - IntelliJ Idea JDK路径

python - 使用 Python 读取 CSV 文件

退出整个程序时出现python线程异常错误

node.js - Node net socket.end 事件触发两次?

python TCP套接字在recv方法上阻塞

java - 通过 Selenium WebDriver 验证列表元素

java - 如何在 ListView 中为每个列表项添加三点菜单?

java - 更改两个布局之间的背景颜色?

python - 如何在忽略 NaN 的同时将 Pandas DataFrame 中的所有列转换为 'object'?