返回信息流这几天正在做一个Android的程序,我负责服务器端的程序,但在调试过程中发现android的客户端向服务器端发送一个字符串或者发送一个数字,这边要很长时间才能接收到,而若果将socket直接关闭的话我这边很快就接到了,(调用了flush()也不管用),而预期设想是我这边接收到客户端的命令后在做一些数据传送的操作,现在却要等很长时间都不能正确传送数据,而客户端却一直在读取输入流,这样就没有得到数据,请教各位大牛应该怎么解决:1.用什么方法能够让服务器端能很快的接收到android客户端发送的数据?2.调用什么方法让客户端程序在服务器端发送完数据后在开始读取输入流呢,难道是调用inputstreamreader的ready()方法吗?
本人由于初学java,道行不深,请各位大牛指教啊[ema23]
这是一条镜像帖。来源:北邮人论坛 / java / #20362同步于 2011/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Andriod客户端和java服务器端的通信问题
wck1990
2011/10/10镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
教你怎么定位问题:首先客户端与服务器通信过程中,抓取报文,在客户端发送数据后如果没有抓取到报文的话,证明此时客户端还没有将数据发送出来,那么问题就出在客户端。然后分析一下客户端的代码应该可以找出问题。
好像上面说的方法是多余的。。。听你的描述很大可能是客户端的问题。。。直接检查客户端代码算了。。。
【 在 wck1990 的大作中提到: 】
: 这几天正在做一个Android的程序,我负责服务器端的程序,但在调试过程中发现android的客户端向服务器端发送一个字符串或者发送一个数字,这边要很长时间才能接收到,而若果将socket直接关闭的话我这边很快就接到了,(调用了flush()也不管用),而预期设想是我这边接收到客户端的命令后在做一些数据传送的操作,现在却要等很长时间都不能正确传送数据,而客户端却一直在读取输入流,这样就没有得到数据,请教各位大牛应该怎么解决:1.用什么方法能够让服务器端能很快的接收到android客户端发送的数据?2.调用什么方法让客户端程序在服务器端发送完数据后在开始读取输入流呢,难道是调用inputstreamreader的ready()方法吗?
: 本人由于初学java,道行不深,请各位大牛指教啊
: --
: ...................
发送一个Url请求,url里面把数据带上,后台写一个Action或者servlet吧,接受数据然后处理
public boolean receive(int num) {
HttpURLConnection connection = null;
DataInputStream inputStream = null;
boolean i = false;
try {
URL defaultURL = new URL("http://59.64.0.1:8080/project/Action!receiveAction.action?num="+ num); //发送一个url请求,调用receiveAction接收数据,然后后台发送数据
connection = (HttpURLConnection)defaultURL.openConnection();
connection.connect();
inputStream = openConnectionInputStream(connection);
i = inputStream.readBoolean();//接收后台发送的数据
} catch (Exception e) {
System.out.println(e.toString());
} finally {
// 释放资源
closeConnection(connection, inputStream);
}
return i;
}
我是这么处理的