java socket发送和接收多条数据的情况怎么解决

。。。。。。。。。for(intj=0;j<list_day.size();j++){Stringday=(String)list_day.get(j);Stringap... 。。。。。。。。。
for (int j = 0; j < list_day.size(); j++) {
String day = (String) list_day.get(j);
String apwork = (String) list_apwork.get(j);
String pmwork = (String) list_pmwork.get(j);
String scheme = (String) list_scheme.get(j);
String sw = day + "#" + apwork + "#" + pmwork + "#"
+ scheme;
System.out.println(sw);
System.out.println("-------------------------");
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket
.getOutputStream()));
bw.write(sw + "\r\n\r\n");
bw.flush();
}
。。。。。。。。。。。。。
服务器上从数据库取得的数据,在for循环中的打印可以看到都有的,但是在接收的客户端那却只能取得第一条的数据或者是N条的第一条数据,应该如何写,才能在客户端取得这些不同的多条数据呢?
这个到底是服务器取得的数据没能全部传出去,只能传出去一条即第一条数据的缘故呢?
还是客户端没有正常读取数据的缘故呢??
iampaipaipai说的两个办法,第二个办法试过,貌似不行,第一个没试,第一个办法的话,那么数据就太庞大了,客户端那边就不好弄了。还有你说的都是服务器那边的修改,难道不会是客户端接收有问题吗?
展开
 我来答
woshiwzy
2009-11-04 · TA获得超过227个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:191万
展开全部
只要是接收端 你都应该不停的等待消息 ,接受消息的那一段可以这样写

while(true)
{
try{ Thread.sleep(300);}catch(Excepion e){}
//注意这里的inStream是DataInputStream 当然你也可以加以装饰
String message= inStream.readUTF();
if(message!=null)
{
System.out.println("收到消息:"+message);
}
}
只有这样才能不断从发送端收到消息,这段代码只是给你一个提示,有问题给我留言,通常为了程序的合理性 最好把这段代码写进一个线程里面,这样更合理
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iampaipaipai
2009-11-04 · 超过11用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:0
展开全部
具体原因不大清楚,我想可能是这样,你在每次进入循环都生成一个新的流对象,这个流对象在销毁回收的时候可能对socket的输出流产生了某种影响吧。

你可以这样来做啊
1. 使用StringBuilder,在循环里面将所有字符串合成一个字符串,最后退出的时候生成一个输出流输出。

2. 在进入循环体前面使用
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket
.getOutputStream()));

只产生一个流对象,在循环里面通过bw输出
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式