用输入输出流实现往服务器端发送消息并接收返回的消息。



客户端 StreamTest.java:



public class StreamTest implements Controller{ 


 public ModelAndView handleRequest(HttpServletRequest req, 

 HttpServletResponse res) throws Exception { 




URL url = new URL("http://localhost:8088/Test/streamtestserver.do"); 

 HttpURLConnection con = (HttpURLConnection)url.openConnection(); 

 con.setRequestMethod("POST"); // 设置请求方式 

 con.setRequestProperty("Content-Type", "application/stream"); // 设置请求类型 

// con.setRequestProperty("Content-Length",Integer.toString(data.length())); 


 con.setDoOutput(true); //默认是false,将 doOutput 标志设置为 true,指示应用程序要将数据写入 URL 连接。 

 con.setDoInput(true); //默认是true,将 doInput 标志设置为 true,指示应用程序要从 URL 连接读取数据。 

 con.setUseCaches(false);//如果为 true,则只要有条件就允许协议使用缓存。如果为 false,则该协议始终必须获得此对象的新副本。 

 con.setInstanceFollowRedirects(true); 


 // con.connect(); 

 System.out.println("StreamTest..................."); 

 OutputStream o = con.getOutputStream(); 

 DataOutputStream d = new DataOutputStream(o); 

 d.write("zy".getBytes()); 

// d.flush(); 

 // d.close(); 

 // con.disconnect(); 



 BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream())); 


 StringBuffer sf = new StringBuffer(); 

 String str; 


 while((str=bf.readLine())!=null) 

 { 


 sf.append(str); 

 } 

 bf.close(); 

 con.disconnect(); 



 System.out.println("StreamTestStr="+sf.toString()); 



 return null; 


} 




}








服务器端 StreamTestServer.java



public class StreamTestServer implements Controller{ 


 public ModelAndView handleRequest(HttpServletRequest req, 

 HttpServletResponse res) throws Exception { 


 BufferedReader bf = new BufferedReader(req.getReader()); 


 StringBuffer sf = new StringBuffer(); 

 String str; 


 while((str=bf.readLine())!=null) 

 { 

 sf.append(str); 

 } 

 bf.close(); 


 System.out.println("StreamTestServer="+sf.toString()); 


 if(sf.toString().equals("zy")){ 

 res.getWriter().write("123456"); // (1) 

 } 




 return null; 

 } 


}



输出结果为

StreamTest...................
StreamTestServer=zy
StreamTestStr=123456



Server端的(1)也可以改成 return new ModelAndView("test.jsp");

jsp中是要输出的内容,不过因为客户端读到的是源文件,所以要把jsp中无用的东西去掉,只写需要传回的信息