Android клиент не отправляет полные сообщения - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть простой сервер в Python и клиент в Java. Когда я нажимаю кнопку «Отправить» в приложении Android, оно отправляет содержимое EditText, а сервер Python распечатывает только что полученное сообщение. К сожалению, большую часть времени сервер печатает только первую букву сообщения. Иногда он печатает полное сообщение, но это случается довольно редко.

Вот код клиента:

btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String msg = msg_input.getText().toString();
                msg_input.setText("");

                Thread t_send = new Thread() {
                    @Override
                    public void run() {
                        try {
                            final Socket s = new Socket("public_ip_of_the_server", port);

                            DataOutputStream dos = new DataOutputStream(s.getOutputStream());
                            dos.writeBytes(msg);

                            DataInputStream dis = new DataInputStream(s.getInputStream());
                            InputStreamReader disR = new InputStreamReader(dis);
                            BufferedReader br = new BufferedReader(disR);

                            messages.setText(messages.getText().toString() + "\n\n" + br.toString());

                            s.close();
                            dos.close();
                        } catch (IOException err) {
                            err.printStackTrace();
                        }
                    }
                };
                t_send.start();
            }
});

А вот код сервера:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), port))
s.listen(5)

while True:
    clientsocket = s.accept()
    msg = clientsocket.recv(128).decode('utf-8')
    print(msg)
    clientsocket.close()

Спасибо за чтение!

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