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说的两个办法,第二个办法试过,貌似不行,第一个没试,第一个办法的话,那么数据就太庞大了,客户端那边就不好弄了。还有你说的都是服务器那边的修改,难道不会是客户端接收有问题吗? 展开
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说的两个办法,第二个办法试过,貌似不行,第一个没试,第一个办法的话,那么数据就太庞大了,客户端那边就不好弄了。还有你说的都是服务器那边的修改,难道不会是客户端接收有问题吗? 展开
2个回答
展开全部
只要是接收端 你都应该不停的等待消息 ,接受消息的那一段可以这样写
while(true)
{
try{ Thread.sleep(300);}catch(Excepion e){}
//注意这里的inStream是DataInputStream 当然你也可以加以装饰
String message= inStream.readUTF();
if(message!=null)
{
System.out.println("收到消息:"+message);
}
}
只有这样才能不断从发送端收到消息,这段代码只是给你一个提示,有问题给我留言,通常为了程序的合理性 最好把这段代码写进一个线程里面,这样更合理
while(true)
{
try{ Thread.sleep(300);}catch(Excepion e){}
//注意这里的inStream是DataInputStream 当然你也可以加以装饰
String message= inStream.readUTF();
if(message!=null)
{
System.out.println("收到消息:"+message);
}
}
只有这样才能不断从发送端收到消息,这段代码只是给你一个提示,有问题给我留言,通常为了程序的合理性 最好把这段代码写进一个线程里面,这样更合理
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体原因不大清楚,我想可能是这样,你在每次进入循环都生成一个新的流对象,这个流对象在销毁回收的时候可能对socket的输出流产生了某种影响吧。
你可以这样来做啊
1. 使用StringBuilder,在循环里面将所有字符串合成一个字符串,最后退出的时候生成一个输出流输出。
2. 在进入循环体前面使用
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket
.getOutputStream()));
只产生一个流对象,在循环里面通过bw输出
你可以这样来做啊
1. 使用StringBuilder,在循环里面将所有字符串合成一个字符串,最后退出的时候生成一个输出流输出。
2. 在进入循环体前面使用
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket
.getOutputStream()));
只产生一个流对象,在循环里面通过bw输出
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询