读书人

一个改良过的适合菜鸟看的java socket

发布时间: 2013-09-25 11:02:59 作者: rapoo

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

下面这个程序是描述如何模仿浏览器向服务器发送请求并在控制台输出服务器的返回信息,这是我看过别人的之后自己用最简单的方法写的,很适合初学者阅读的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<contentLength;i++) do{ temp=br1.readLine(); if(temp==null)break; System.out.println(temp); }while(br1.readLine()=="\r\n"); pw.close(); s.close(); }catch(Exception e){ e.printStackTrace(); }}}


读书人网 >编程

热点推荐