android - 为什么我的服务器接收数据需要这么长时间?
问题描述
我正在编写代码以将数据从手机上的 android 客户端传输到 PC 上的服务器。我认为当我调用该函数在我的客户端上发送数据时,它应该将数据发送到客户端并且客户端会显示它。但是,消息(2 分钟)在我的电脑上显示需要很长时间。现在它甚至在服务器上什么也没有显示。有时它不显示任何消息。我想知道为什么会这样。这是我在客户端上发送数据的代码:
String str="abc";
btnSend = (Button) findViewById(R.id.send);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
outputStream = socket.getOutputStream();
PrintWriter pw=new PrintWriter(outputStream);
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
pw.write(str);
pw.flush();
String reply=null;
while(!((reply=br.readLine())==null)){
System.out.println("Receive the data of the server:"+reply);
}
br.close();
is.close();
pw.close();
outputStream.close();
socket.close();
} catch (IOException e) {
Log.d("send",Log.getStackTraceString(e));
}
catch(NullPointerException e)
{
Log.d("send",Log.getStackTraceString(e));
}
}
});
下面是在服务器中接收数据的代码:
try {
ServerSocket serverSocket=new ServerSocket(9102);
Socket socket=serverSocket.accept();
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while(!((info=br.readLine())==null)){
System.out.println("I am the server:"+info);
}
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
String reply="welcome";
pw.write(reply);
pw.flush();
pw.close();
br.close();
is.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这是logcat: 客户端的logcat
解决方案
推荐阅读
- javascript - 调用带有 Axios 的 JS 函数,调用时返回未定义
- apache-storm - 为什么 acked 的数字可能与 Storm Spout 上发出的数字有很大差异?
- json - 如何使用 kotlin 以可重用的方式使用关键属性比较 2 个 Json 对象文件?
- javascript - 如何访问浏览器音频流(来自浏览器的声音)。有这方面的API吗?
- android - 在 android studio 3.6.3 中创建新项目时出现问题
- node.js - 如何使用 NodeJS 在 MongoDB 中执行文本搜索查询?
- c - 为什么这个 Makefile 会无限次执行程序?
- r - 为什么升级到 R 4.0.0 后 xts.index 停止工作?
- node.js - 使用 Node 和 Express 在按钮单击时渲染 pug 页面
- python - 如何为函数参数“*argv”添加解析器参数