У меня есть простой сервер в 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()
Спасибо за чтение!