Java客户端和Python服务器之间的套接字消息传递

Java客户端和Python服务器之间的套接字消息传递,java,python,sockets,Java,Python,Sockets,我尝试在Java客户机和Python服务器之间创建一个套接字消息器。它将一条消息(“Testdata”)从客户端发送到服务器并打印出来。但在从服务器向客户机输入并发送消息之后,我并没有从客户机得到任何输出。客户端“冻结”,必须终止 我的客户端输入有什么问题 终端服务器: py socketServer.py Connection from: ('127.0.0.1', 57069) from connected user: Testdata > Test send data.. jav

我尝试在Java客户机和Python服务器之间创建一个套接字消息器。它将一条消息(“Testdata”)从客户端发送到服务器并打印出来。但在从服务器向客户机输入并发送消息之后,我并没有从客户机得到任何输出。客户端“冻结”,必须终止

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


终端服务器:

py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient   
Testdata
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();
    }
}
终端客户端:

py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient   
Testdata
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服务器:

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客户端:

py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient   
Testdata
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在回答中所说的那样用
\r\n
显式完成。

您可以查看答案。(@carlos palma)你的客户正在阅读线路,但你的服务器没有发送线路。