亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java實現輕量型http代理服務器示例

2019-11-26 15:33:30
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

package cn.liangjintang.httpproxy;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpProxy {
 static long threadCount = 0;
 int myTcpPort = 8080;
 private ServerSocket myServerSocket;
 private Thread myThread;

 public HttpProxy(int port) throws IOException {
  myTcpPort = port;
  myServerSocket = new ServerSocket(myTcpPort);
  myThread = new Thread(new Runnable() {
   public void run() {
    try {
     while (true)
      new HTTPSession(myServerSocket.accept());
    } catch (IOException ioe) {
    }
   }
  });
  myThread.setDaemon(true);
  myThread.start();
 }

 /**
  * Stops the server.
  */

 public void stop() {
  try {
   myServerSocket.close();
   myThread.join();
  } catch (IOException ioe) {
  } catch (InterruptedException e) {
  }
 }

 public class HTTPSession implements Runnable {
  private Socket mySocket;

  public HTTPSession(Socket s) {
   mySocket = s;
   Thread t = new Thread(this);
   t.setDaemon(true);
   t.start();
  }

  @Override
  public void run() {
   try {
    ++threadCount;

    InputStream is = mySocket.getInputStream();
    if (is == null)
     return;
    final int bufsize = 8192;
    byte[] buf = new byte[bufsize];
    int splitbyte = 0;
    int rlen = 0;
    {
     int read = is.read(buf, 0, bufsize);
     while (read > 0) {
      rlen += read;
      splitbyte = findHeaderEnd(buf, rlen);
      if (splitbyte > 0)
       break;
      read = is.read(buf, rlen, bufsize - rlen);
     }
     ByteArrayInputStream hbis = new ByteArrayInputStream(buf,
       0, rlen);
     BufferedReader hin = new BufferedReader(
       new InputStreamReader(hbis));
     Host host = new Host();
     {
      String string;
      boolean flag = false;
      while ((string = hin.readLine()) != null) {
       if (string.toLowerCase().startsWith("host:")) {
        host.host = string;
        flag = true;
       }
       System.out.println(string);
      }
      if (!flag) {
       mySocket.getOutputStream().write(
         "error!".getBytes());
       mySocket.close();
       return;
      }
     }

     host.cal();
     System.out.println("address:[" + host.address + "]port:"
       + host.port + "/n-------------------/n");

     try {
      pipe(buf, rlen, mySocket, mySocket.getInputStream(),
        mySocket.getOutputStream(), host);
     } catch (Exception e) {
      System.out.println("Run Exception!");
      e.printStackTrace();
     }
    }

   } catch (Exception e) {
   }
   System.out.println("threadcount:" + --threadCount);
  }

  /**
   * finad http header
   **/
  private int findHeaderEnd(final byte[] buf, int rlen) {
   int splitbyte = 0;
   while (splitbyte + 3 < rlen) {
    if (buf[splitbyte] == '/r' && buf[splitbyte + 1] == '/n'
      && buf[splitbyte + 2] == '/r'
      && buf[splitbyte + 3] == '/n')
     return splitbyte + 4;
    splitbyte++;
   }
   return 0;
  }

  void pipe(byte[] request, int requestLen, Socket client,
    InputStream clientIS, OutputStream clientOS, Host host)
    throws Exception {
   byte bytes[] = new byte[1024 * 32];
   Socket socket = new Socket(host.address, host.port);
   socket.setSoTimeout(3000);
   OutputStream os = socket.getOutputStream();
   InputStream is = socket.getInputStream();
   try {
    do {
     os.write(request, 0, requestLen);
     int resultLen = 0;
     try {
      while ((resultLen = is.read(bytes)) != -1
        && !mySocket.isClosed() && !socket.isClosed()) {
       clientOS.write(bytes, 0, resultLen);
      }
     } catch (Exception e) {
      System.out.println("target Socket exception:"
        + e.toString());
     }

     System.out.println("proxy requset-connect broken,socket:"
       + socket.hashCode());
    } while (!mySocket.isClosed()
      && (requestLen = clientIS.read(request)) != -1);
   } catch (Exception e) {
    System.out.println("client Socket exception:" + e.toString());
   }

   System.out.println("end,socket:" + socket.hashCode());
   os.close();
   is.close();
   clientIS.close();
   clientOS.close();
   socket.close();
   mySocket.close();

  }

  // target Host info
  final class Host {
   public String address;
   public int port;
   public String host;

   public boolean cal() {
    if (host == null)
     return false;
    int start = host.indexOf(": ");
    if (start == -1)
     return false;
    int next = host.indexOf(':', start + 2);
    if (next == -1) {
     port = 80;
     address = host.substring(start + 2);
    } else {
     address = host.substring(start + 2, next);
     port = Integer.valueOf(host.substring(next + 1));
    }
    return true;
   }
  }
 }

 public static void main(String[] args) {
  try {
   new HttpProxy(8580);
  } catch (IOException ioe) {
   System.err.println("Couldn't start server:/n" + ioe);
   System.exit(-1);
  }
  System.out.println("start!");
  try {
   System.in.read();
  } catch (Throwable t) {
  }
  System.out.println("stop!");
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美激情另类校园| 中文字幕日韩av综合精品| 91禁国产网站| 日韩电影在线观看永久视频免费网站| 亚洲第一福利在线观看| 热久久视久久精品18亚洲精品| 国产女精品视频网站免费| 色久欧美在线视频观看| 亚洲精品一区二区三区不| 日韩精品亚洲视频| 国产suv精品一区二区三区88区| 色琪琪综合男人的天堂aⅴ视频| 亚洲人成电影网| 日韩一二三在线视频播| 亚洲人成电影网站色www| www国产亚洲精品久久网站| 精品国产一区二区三区在线观看| 久久人人97超碰精品888| 青青草精品毛片| 国产精品啪视频| 欧美高清视频一区二区| 久久久精品国产亚洲| 日韩电影中文字幕一区| 亚洲色图美腿丝袜| 成人黄色免费看| 日韩精品一二三四区| 午夜精品美女自拍福到在线| 亚洲国产另类 国产精品国产免费| 亲子乱一区二区三区电影| 亚洲人成网站色ww在线| 成人免费福利在线| 欧美精品videos性欧美| 国产精品91一区| 性欧美在线看片a免费观看| 日韩av有码在线| 91亚洲国产精品| 正在播放亚洲1区| 欧美与黑人午夜性猛交久久久| 国产精品一区二区三区毛片淫片| 精品视频在线导航| 91日本视频在线| 日韩精品免费在线视频| 在线成人中文字幕| 热久久免费国产视频| 日韩视频欧美视频| 日韩精品在线观看一区二区| 国产精品女主播| 欧美资源在线观看| 日韩av在线天堂网| 国产精品麻豆va在线播放| 成人免费激情视频| 成人做爽爽免费视频| 欧美国产日韩精品| 欧美高清视频在线| 精品一区精品二区| 91精品国产91久久久| 久久精品国产亚洲7777| 日韩av中文字幕在线免费观看| 亚洲国产精品专区久久| 亚洲国产三级网| 欧美成人久久久| 国产精品va在线播放| 久久久之久亚州精品露出| 国产成人91久久精品| 91精品国产综合久久香蕉| 国产欧美日韩精品丝袜高跟鞋| 亚洲精品日韩在线| 欧美电影免费看| 亚洲成色www8888| 日韩欧美福利视频| 亚洲一区二区在线| 日本亚洲欧洲色α| 成人在线视频网站| 亚洲国产精品成人一区二区| 成人免费看吃奶视频网站| 国产v综合ⅴ日韩v欧美大片| 欧美激情手机在线视频| 日韩欧美在线观看| 久久精视频免费在线久久完整在线看| 成人免费激情视频| 国产一级揄自揄精品视频| 国产在线精品播放| 亚洲娇小xxxx欧美娇小| 日韩精品一区二区视频| 国产精品极品美女在线观看免费| 5252色成人免费视频| 亚洲第一av在线| 日韩美女写真福利在线观看| 欧洲日本亚洲国产区| 亚洲欧美另类在线观看| 日韩精品久久久久久久玫瑰园| 欧美成人精品激情在线观看| 亚洲国产精品久久精品怡红院| 国产欧美一区二区三区在线| 久久久天堂国产精品女人| 91理论片午午论夜理片久久| 一区二区三区日韩在线| 国产精品日韩电影| 欧美区二区三区| 日韩av在线不卡| 最近更新的2019中文字幕| 欧美激情在线一区| 国产欧美精品在线播放| 91高清视频免费观看| 午夜精品久久久久久99热软件| 久久精品国产亚洲精品| 欧美日韩国产精品一区| 97精品久久久中文字幕免费| 成人免费福利在线| 久久全国免费视频| 亚洲欧美日韩精品| 97久久伊人激情网| 川上优av一区二区线观看| 欧美怡春院一区二区三区| 97成人在线视频| 成人写真视频福利网| 日韩国产在线看| 日韩av在线导航| 少妇高潮久久久久久潘金莲| 国产深夜精品福利| 中文字幕久久久| 激情亚洲一区二区三区四区| 亚洲色图美腿丝袜| 在线日韩欧美视频| 欧洲中文字幕国产精品| 国产aⅴ夜夜欢一区二区三区| 精品国产一区二区三区久久狼5月| 国产欧美精品va在线观看| 成人免费网站在线观看| 欧美综合第一页| xxxxx成人.com| 4k岛国日韩精品**专区| 久久久久国色av免费观看性色| 日本亚洲欧美三级| 色综合久综合久久综合久鬼88| 欧美激情精品久久久久久变态| 久久久91精品国产一区不卡| 国产欧美精品久久久| 亚洲国产中文字幕在线观看| 亚洲精品国产suv| 国产精品av电影| 日韩欧美国产激情| 亚洲国产99精品国自产| 成人黄色免费在线观看| 一个人看的www久久| 中文字幕久久久av一区| 成人黄色片在线| 91av在线视频观看| 国内精品久久久| 欧美极品xxxx| 日韩大片在线观看视频| 国产精品久久久久99| 亚洲欧美综合精品久久成人| 亚洲欧美日韩第一区| 日韩电影在线观看免费| 国产精品久久久久91| 欧美高清不卡在线| 国产美女精品视频免费观看| 亚洲国产精品va在线看黑人动漫| 精品亚洲一区二区三区四区五区| 久久久久久久久爱| 亚洲淫片在线视频| 国产欧美精品xxxx另类| 欧美性理论片在线观看片免费|