首页 > 解决方案 > Android客户端未发送完整消息

问题描述

我有一个简单的 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()

谢谢阅读!

标签: javapythonandroidsockets

解决方案


推荐阅读