Java-клиент, Python-сервер: клиент, похоже, не получит данные - PullRequest
0 голосов
/ 19 декабря 2018

На основе: Сервер (Python) - связь с клиентом (Java) с использованием сокетов

Я просто пытаюсь отправить простые данные из моего RPI с помощью Raspbian на мой Mac, на которомJava-клиент запущен.

Хотя в журнале клиента застревает сообщение «Попытка чтения ...» - строка постоянно.Отладка стандартного ввода не имеет никакого смысла.Возможно ли проблема в кодировке отправленных данных?

Python 2.7.133

Python Server (Разница здесь в строке 18, удалена кодировка UTF-8 из исходного кода, чтобы избежатьОшибка типа: str () принимает не более 1 аргумента (2 дано) -Issue)

import socket
HOST = "192.168.0.38"
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

try:
    s.bind((HOST, PORT))
except socket.error as err:
    print('Bind failed. Error Code : ' .format(err))
s.listen(10)
print("Socket Listening")
conn, addr = s.accept()
while(True):
    conn.send(bytes("Message")
    print("Message sent")
    data = conn.recv(1024)
    print(data.decode(encoding='UTF-8'))

Java-клиент

package com.example.demo;
//von https://stackoverflow.com/questions/31983000/serverpython-clientjava-communication-using-sockets


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;


public class Main {
    static Thread sent;
    static Thread receive;
    static Socket socket;

    public static void main(String args[]){
        try {
            socket = new Socket("192.168.0.38",9999);
        } catch (UnknownHostException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        sent = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    BufferedReader stdIn =new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                    while(true){
                        System.out.println("Trying to read...");
                        String in = stdIn.readLine();
                        System.out.println(in);
                        out.print("Try"+"\r\n");
                        out.flush();
                        System.out.println("Message sent");
                    }

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
        });
        sent.start();
        try {
            sent.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

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