android - 第一次发送消息,为什么我不能再次发送消息(Android Socket 编程)
问题描述
我为客户端创建了套接字编程类。已建立连接。服务器向客户端发送消息。客户端可以从服务器获取消息。但客户端只发送一个答案。为什么?输出流错了吗?
public class Message extends AsyncTask<byte[], Void, Void> {
Socket s;
public static byte[] recv;
@Override
protected Void doInBackground(byte[]... voids) {
byte[] message = voids[0];
try {
s = new Socket(destIp, destPort);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeInt(message.length);
dos.write(message);
dos.flush();
InputStream inFromServer = s.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
byte[] buffer = new byte[200];
int read = 0;
while ((read = in.read(buffer, 0, buffer.length)) != -1) {
// in.read(buffer);
recv = Arrays.copyOf(buffer, read);
Context context = getContext();
Intent intentManager = new Intent(context, ManagerService.class);
context.startService(intentManager);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
解决方案
我在启动 asynctask 的部分修复了这个问题
new MessageReceive().execute(sendData);
至
new MessageReceive().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,sendData);
推荐阅读
- javascript - 与 GSAP 和 ScrollMagic 反应 - Tween 无效
- javascript - Angular - 在输入字段上写@后显示下拉列表
- hsm - 将 KEY 翻译成 ZMK.LMK Thales 9000
- push-notification - Youtube API - 有没有办法获取有关 youtube 频道的实时信息,例如正在上传的新视频?
- node.js - 如何使用 twitter-lite 获取 Twitter 主页流?
- php - 未重定向到 Codeigniter 4 中的特定 URL
- python - TinyMCE 没有出现在 Flask 中
- c++ - C++ - -for 循环中的条件 - 没有像我认为的那样被评估
- c# - 在我的 asp.net 应用程序中使用命令行应用程序
- jpa - 在 JPA 中使用 where 子句内部连接 3 个表