我现有一种socket数据,内容为:
第一行: IP地址+\n;
第二行: 消息实体+\n;
第三行: 消息实体+\n; ..............说明:消息实体为一行字符串,整个socket数据也可能只有前两行,也可能有多行,应该怎样读取该数据?下面是我的代码,可能是我的设计不正确,程序总是在while((msg = reader_A.readLine())!=null),只执行一次就不向下执行了(是阻塞了还是内存耗尽了,我不太清楚,我的程序老报:java.lang.OutOfMemoryError: Java heap space),各位有好的取读方法请指教一下,给我指正一下我的代码也非常感谢!
private BufferedReader reader_A; private PrintWriter writer_A; public String Bip;// B方的IP; public String msgUnit; Socket socket;
//变量的实例化过程我不给出具体代码了,只贴关键部分 reader_A = new BufferedReader(new InputStreamReader(socket
.getInputStream(), "utf8"));
String msg = "no data now";
while ((Bip = reader_A.readLine()) != null)// 此处会等待用户发送一次消息
{ // 条件中读取socket数据的头数据,该数据为B方IP
while((msg = reader_A.readLine())!=null){//取读消息实体
if (msg == "end#102") {//如果读到结束标识符了就把消息一次性发送出去
bMan.sendToB(msgUnit, Bip);// 调用发送方法,将消息 发送给B
break;//跳出内while
} else {//否则的话就再消息放到累加器中
msgUnit += msg;// 将收到的每行的消息汇总起来,一起向外发送
}
}
}
第一行: IP地址+\n;
第二行: 消息实体+\n;
第三行: 消息实体+\n; ..............说明:消息实体为一行字符串,整个socket数据也可能只有前两行,也可能有多行,应该怎样读取该数据?下面是我的代码,可能是我的设计不正确,程序总是在while((msg = reader_A.readLine())!=null),只执行一次就不向下执行了(是阻塞了还是内存耗尽了,我不太清楚,我的程序老报:java.lang.OutOfMemoryError: Java heap space),各位有好的取读方法请指教一下,给我指正一下我的代码也非常感谢!
private BufferedReader reader_A; private PrintWriter writer_A; public String Bip;// B方的IP; public String msgUnit; Socket socket;
//变量的实例化过程我不给出具体代码了,只贴关键部分 reader_A = new BufferedReader(new InputStreamReader(socket
.getInputStream(), "utf8"));
String msg = "no data now";
while ((Bip = reader_A.readLine()) != null)// 此处会等待用户发送一次消息
{ // 条件中读取socket数据的头数据,该数据为B方IP
while((msg = reader_A.readLine())!=null){//取读消息实体
if (msg == "end#102") {//如果读到结束标识符了就把消息一次性发送出去
bMan.sendToB(msgUnit, Bip);// 调用发送方法,将消息 发送给B
break;//跳出内while
} else {//否则的话就再消息放到累加器中
msgUnit += msg;// 将收到的每行的消息汇总起来,一起向外发送
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货