java中可以使用BufferedReader 与BufferedWriter来辅助完成socket通信功能,但是使用中需要注意下面这个坑:
代码语言:javascript复制 BufferedReader bufReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//用于发送返回信息,可以不需要装饰这么多io流使用缓冲流时发送数据要注意调用.flush()方法
BufferedWriter bufWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
int nMsgLen = 0;
String sMsgBody="";
String str = StringUtils.strip(bufReader.readLine());
bufReader.close();-----位置不对,这步调用将导致socket关闭,导致下面的bufWriter.write调用抛出异常
代码语言:javascript复制(java.net.SocketException: Socket closed)
System.out.println("Client Socket Message:" str);
bufWriter.write("Message Received" str);
bufWriter.flush();
bufWriter.close();
socket.close();
socket=null;
正确的使用方法:在完成所有write以及read后再分别调用BufferedReader类以及BufferedWriter类的close方法。