httpclient.java

来自「很棒的web服务器源代码」· Java 代码 · 共 138 行

JAVA
138
字号
// HttpClient.java// $Id: HttpClient.java,v 1.4 2000/08/16 21:38:02 ylafon Exp $  // (c) COPYRIGHT MIT and INRIA, 1997.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.www.mux.tests;import java.io.BufferedOutputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;import java.net.URL;import java.util.Vector;import org.w3c.www.mux.MuxSession;import org.w3c.www.mux.MuxStream;class MuxFetcher extends Thread {    MuxSession       ses = null;    DataOutputStream out = null;    InputStream      in  = null;    URL              u   = null;    OutputStream     dst = null;    public void request(URL u) 	throws IOException    {	out.writeBytes("GET "+u+" HTTP/1.1\r\n");	out.writeBytes("Connection: close\r\n\r\n");	out.flush();    }    public void copy(URL u, OutputStream dst) 	throws IOException    {	request(u);	byte buffer[] = new byte[1024];	int  got      = -1;	while((got = in.read(buffer, 0, buffer.length)) > 0)	    dst.write(buffer, 0, got);    }    public void dump(URL u) 	throws IOException    {	request(u);	byte buffer[] = new byte[1024];	int  got      = -1;	while ((got = in.read(buffer, 0, buffer.length)) > 0)	    System.out.print(new String(buffer, 0, 0, got));	System.out.println("Dumped all available data !");    }    public void run() {	try {	    // Get the streams:	    out = (new DataOutputStream		   (new BufferedOutputStream(ses.getOutputStream())));	    in  = ses.getInputStream();	    // Run the command:	    if ( dst != null )		copy(u, dst);	    else		dump(u);	    ses.shutdown();	} catch (Exception ex) {	    ex.printStackTrace();	}    }    MuxFetcher(MuxStream stream, URL u) 	throws IOException    {	this(stream, u, null);    }    MuxFetcher(MuxStream stream, URL u, OutputStream dst) 	throws IOException    {	this.ses = stream.connect(80);	this.dst = dst;	this.u   = u;	start();    }}public class HttpClient {    public static MuxStream stream = null;    public static void main(String args[]) {	String host = "www43.inria.fr";	int    port = 8007;	Vector urls = new Vector();	// Parse command line:	for (int i = 0 ; i < args.length ; i++) {	    if (args[i].equals("-h")) {		host = args[++i];	    } else if (args[i].equals("-p")) {		try {		    port = Integer.parseInt(args[++i]);		} catch (Exception ex) {		    ex.printStackTrace();		}	    } else {		urls.addElement(args[i]);	    }	}	// Connect to target host:	try {	    Socket     socket     = new Socket(host, port);	    MuxStream  stream     = new MuxStream(false, null, socket);	    MuxFetcher fetchers[] = new MuxFetcher[urls.size()];	    // Fork the fetchers:	    for (int i = 0 ; i < urls.size() ; i++) {		URL u = new URL((String) urls.elementAt(i));		fetchers[i] = new MuxFetcher(stream, u);	    }	    // Wait for completion:	    for (int i = 0 ; i < fetchers.length ; i++) {		fetchers[i].join();	    }	    // Close mux stream:	    stream.shutdown(true);	} catch (Exception ex) {	    ex.printStackTrace();	}    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?