Package org.w3c.www.mux.tests

Source Code of org.w3c.www.mux.tests.HttpClient

// 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.html

package 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();
  }

    }

}
TOP

Related Classes of org.w3c.www.mux.tests.HttpClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.