java - 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()
谢谢阅读!
解决方案
推荐阅读
- javascript - 从 json 和 url 检索数据
- html - 边框增加了额外的 1px
- java - 如何将 Java AES - CBC 与 PKCS5 填充更改为 PHP
- angular - 验证 mat-autocomplete 是对象
- python - 复制嵌套列表并用连续的数字填充
- django - Django Queryset 加载时间过长
- bash - Ctrl+C 在 Git Bash 2.20.1 中不能与 gradle 一起使用
- shell - 我无法从其他函数 shell 脚本中的函数获取值
- macos - 有没有办法在没有 UI 的情况下检查下载(Mac / Unix)
- javascript - 当使用带有条件的 $convert 和错误输出仍然是 NaN