Обмен сообщениями через сокет между Java клиентом и Python сервером - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать Socket Messager между Java Клиентом и Python Сервером. Это работает, чтобы отправить сообщение ("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();
    }
}

1 Ответ

0 голосов
/ 20 января 2020

Это потому, что python сообщения явно не заканчиваются \r\n, как @carlos palmas говорит в этом ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...