一个改良过的适合初学者看的java socket通信程序

2014-11-24 09:12:37 · 作者: · 浏览: 1
 
 
下面这个程序是描述如何模仿 浏览器向服务器发送请求并在控制台输出服务器的返回信息,这是我看过别人的之后自己用最简单的方法写的,很适合初学者 阅读的java socket程序。也有一个缺点,就是当与真正的服务器相连,由于速度实在太慢,根本看不到结果。闲话不多说,网上这方面的程序很多,其实都是差不多的。
package smallTest; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class ClientDemo { /** * @param args */ public static void main(String[] args) { try{ Socket s=new Socket("127.0.0.1",80); InputStream ins = s.getInputStream(); OutputStream out= s.getOutputStream(); PrintWriter pw =new PrintWriter(out,true); StringBuffer sb = new StringBuffer(); sb.append("GET /test.htm HTTP/1.1\r\n"); sb.append("Accept: */*\r\n"); sb.append("Accept-Language: zh-cn\r\n"); sb.append("Host: localhost:80\r\n"); sb.append("Connection: Keep-Alive\r\n"); //注,这是关键的关键,这里一定要一个回车换行,表示消息头完,不然服务器会等待 sb.append("\r\n"); pw.println(sb.toString()); pw.flush();String temp;int contentLength=200; BufferedReader br1= new BufferedReader(new InputStreamReader(ins)); for(int i=0;i<6;i++) do{ temp=br1.readLine(); System.out.println(temp); if(temp.startsWith("Content-Length")){ contentLength = Integer.parseInt(temp.split(":")[1].trim()); } }while(br1.readLine()=="\r\n"); for(int i=0;i