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

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:17:57
。。。。。。。。。
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");

具体原因不大清楚,我想可能是这样,你在每次进入循环都生成一个新的流对象,这个流对象在销毁回收的时候可能对socket的输出流产生了某种影响吧。

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

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

只产生一个流对象,在循环里面通过bw输出

只要是接收端 你都应该不停的等待消息 ,接受消息的那一段可以这样写

while(true)
{
try{ Thread.sleep(300);}catch(Excepion e){}
//注意这里的inStream是DataInputStream 当然你也可以加以装饰
String message= inStream.readUTF();
if(message!=null)
{
System.out.println("收到消息:"+message);
}
}
只有这样才能不断从发送端收到消息,这段代码只是给你一个提示,有问题给我留言,通常为了程序的合理性 最好把这段代码写进一个线程里面,这样更合理