亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? httpconnection.java

?? 這是linux下ssl vpn的實現程序
?? JAVA
字號:
package com.maverick.http;

import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.maverick.ssl.*;
import java.io.*;

public class HttpConnection {

  SocketWithLayeredTransport socket;
  InputStream in;
  OutputStream out;
  OutputStream monitorInOut;
  OutputStream monitorOutOut;
  HttpClient client;
  boolean isClosed = false;
  boolean canReuse = true;
  boolean keepAlive = true;
  long lastAccessed;
  HttpAuthenticator authenticator;
  boolean monitoring = "true".equals(System.getProperty("http.connection.debug"));

  public static final int CONNECTION_TIMEOUT_LIMIT = 120000;
  private static int sequence = 0;
  private static SimpleDateFormat f = new SimpleDateFormat("HH-mm-ss-SS");
  private static Object lock = new Object();
  
  private static boolean linger = true;

  /* DEBUG */static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(HttpConnection.class);

  public HttpConnection(HttpClient client) throws UnknownHostException, IOException, HttpException, UnsupportedAuthenticationException, AuthenticationCancelledException  {
      this.client = client;
      reconnect();
  }
  
  public static void setDefaultSoLinger(boolean linger) {
      HttpConnection.linger = linger;
  } 

  public synchronized void reconnect() throws UnknownHostException, IOException, HttpException, UnsupportedAuthenticationException, AuthenticationCancelledException {
    close();
    if(!client.isProxyConfigured()) {
      /* DEBUG */log.debug("Connecting to " + client.hostname + ":" + client.port);
      this.socket = new SocketWithLayeredTransport(client.hostname, client.port);
      if (client.isSecure)
        socket.pushTransport(new SSLTransport());
    } else {

      synchronized(client) {
      switch(client.proxyType) {
        case HttpClient.PROXY_HTTP:
        case HttpClient.PROXY_HTTPS:

            /* DEBUG */log.debug("Connecting to " + client.hostname + ":" + client.port + " through " + (client.proxyType==HttpClient.PROXY_HTTPS?"https":"http") + " proxy " + client.proxyHost + ":" + client.proxyPort);
          // Setup the proxy client connection
            if(client.proxyClient==null) {
              client.proxyClient = new HttpClient(client);
            }

            ConnectMethod proxyConnect = new ConnectMethod(client.hostname, client.port, client.isSecure);
            // Execute and retreive the direct socket
            HttpResponse response = client.proxyClient.execute(proxyConnect);

            if(response.getStatus()==200) {
                socket = response.getConnection().socket;
            }
            else
              throw new IOException("Proxy returned HTTP status code " + response.getStatus());
            break;
        default:
            throw new IllegalArgumentException("Invalid proxy type set! type=" + client.proxyType);
      }
      }
    }
    
    int lingerTime = socket.getSoLinger();
    socket.setSoLinger(linger, false ? 0 : ( lingerTime == -1 ? 0 : lingerTime ) );

    in = new HttpConnectionInputStream(socket.getInputStream(), 32768);
    out = new HttpConnectionOutputStream();

    isClosed = false;
    canReuse = true;
  }

  public boolean isMonitoring() {
      return monitoring;
  }

  void monitor(String uri) throws IOException {
      File dir = new File(System.getProperty("java.io.tmpdir"), client.getHost() + "." + client.getPort());
      if(!dir.exists() && !dir.mkdirs()) {
          /* DEBUG */log.error("Failed to create Maverick HTTP debug directory in " + dir + ", no debug will occur.");
      }
      else {
          synchronized(lock) {
              File inFile = new File(dir,
                                     String.valueOf(sequence) + "_" + f.format(new Date()) +
                                     ".response.log");
              File outFile = new File(dir,
                                      String.valueOf(sequence) + "_" + f.format(new Date()) +
                                      ".request.log");
              monitorInOut = new FileOutputStream(inFile);
              monitorOutOut = new FileOutputStream(outFile);
              in = new MonitorInputStream(new HttpConnectionInputStream(socket.
                      getInputStream(), 32768), monitorInOut);
              out = new MonitorOutputStream(new HttpConnectionOutputStream(),
                                            monitorOutOut);

              sequence++;
          }
        }
  }

  void stopMonitor() throws IOException {

      try {
          in.close();
      } catch(IOException ex) { }
      try {
          out.close();
      } catch(IOException ex) { }
      in = socket.getInputStream();
      out = new HttpConnectionOutputStream();
  }

  void updateState() {
      this.lastAccessed = System.currentTimeMillis();
  }

  void release() {

      try {
          if (monitoring)
              stopMonitor();
      } catch(IOException ex) { }

      if(!canReuse)
          close();
      client.connections.releaseConnection(this);
  }

  void verify() throws UnknownHostException, IOException, HttpException, UnsupportedAuthenticationException, AuthenticationCancelledException {

      try {

          if(System.currentTimeMillis() > lastAccessed + CONNECTION_TIMEOUT_LIMIT)
              canReuse = false;
          else {

              try {
                  socket.setSoTimeout(1);
                  in.mark(1);
                  int byteRead = in.read();
                  if (byteRead == -1) {
                      // again - if the socket is reporting all data read,
                      // probably stale
                      /* DEBUG */log.debug("Connection is EOF");
                      canReuse = false;
                  } else {
                      in.reset();
                  }
              } finally {
                  socket.setSoTimeout(0);
              }
          }
      } catch(InterruptedIOException ex) {
          // Connection should be ok
      } catch(SSLIOException ex) {
         canReuse = (ex.getRealException().getStatus() == SSLException.READ_TIMEOUT);
      } catch(IOException ex) {
          // Connection is dead
          /* DEBUG */log.debug("Connection is dead");
          canReuse = false;

      }

      if(!canReuse)
         reconnect();
  }

  public boolean isClosed() {
      return isClosed;
  }

  public boolean isKeepAlive() {
      return keepAlive;
  }

  public boolean canReuse() {
    return canReuse;
  }

  public synchronized void close() {
      try {
          try {
            if(socket!=null)
              socket.close();
          } catch(IOException ex) { }
      }
      finally {
          if(monitorInOut != null) {
              try {
                  monitorInOut.close();
              }
              catch(IOException ioe) {
              }
          }
          if(monitorOutOut != null) {
              try {
                  monitorOutOut.close();
              }
              catch(IOException ioe) {
              }
          }
      }

      isClosed = true;
  }

  public OutputStream getOutputStream() throws IOException {
    return out;
//    return socket.getOutputStream();
  }

  public InputStream getInputStream() throws IOException {
    return in;
  }

  public int getPort() {
    return client.port;
  }

  public String getHost() {
    return client.hostname;
  }

  public boolean isSecure() {
    return client.isSecure;
  }

  public Socket getSocket() {
    return socket;
  }

  public void setAuthenticator(HttpAuthenticator authenticator) {
    this.authenticator = authenticator;
  }

  public HttpAuthenticator getAuthenticator() {
     return authenticator;
  }

  class HttpConnectionInputStream extends BufferedInputStream {

      HttpConnectionInputStream(InputStream in, int len) {
          super(in, len);
      }

      public void close() throws IOException {
          updateState();
          socket.getInputStream().close();
      }

      public int read() throws IOException {
          updateState();
          return super.read();
      }

      public int read(byte[] buf, int off, int len) throws IOException {
          updateState();
          return super.read(buf, off, len);
      }
  }

  class HttpConnectionOutputStream extends OutputStream {

      public void close() throws IOException {
          updateState();
          socket.getOutputStream().close();
      }
      public void write(int b) throws IOException {
          updateState();
          socket.getOutputStream().write(b);
      }

      public void write(byte[] buf, int off, int len) throws IOException {
          updateState();
          socket.getOutputStream().write(buf, off, len);
      }
  }

  class MonitorInputStream extends InputStream {

    InputStream in = null;
    OutputStream monitorOut;

    MonitorInputStream(InputStream in, OutputStream monitorOut) {
        super();
        this.in = in;
        this.monitorOut = monitorOut;
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#available()
     */
    public int available() throws IOException {
        return in.available();
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#close()
     */
    public void close() throws IOException {
        in.close();
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#mark(int)
     */
    public synchronized void mark(int readlimit) {
        in.mark(readlimit);
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#markSupported()
     */
    public boolean markSupported() {
        return in.markSupported();
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#read(byte[], int, int)
     */
    public int read(byte[] b, int off, int len) throws IOException {
        int r = in.read(b, off, len);
        if(r != -1) {
            try {
                monitorOut.write(b, off, r);
                monitorOut.flush();
            }
            catch(IOException ioe) {
            }
        }
        return r;
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#read(byte[])
     */
    public int read(byte[] b) throws IOException {
        int r = in.read(b);
        if(r != -1) {
            try {
                monitorOut.write(b, 0, r);
                monitorOut.flush();
            }
            catch(IOException ioe) {
            }
        }
        return r;
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#reset()
     */
    public synchronized void reset() throws IOException {
        in.reset();
    }

    /* (non-Javadoc)
     * @see java.io.InputStream#skip(long)
     */
    public long skip(long n) throws IOException {
        return in.skip(n);
    }

    public int read() throws IOException {
        int r = in.read();
        if(r != -1) {
            try {
                monitorOut.write(r);
                monitorOut.flush();
            }
            catch(IOException ioe) {
            }
        }
        return r;
    }

  }

  class MonitorOutputStream extends OutputStream {

    OutputStream out;
    OutputStream monitorOut;

    MonitorOutputStream(OutputStream out, OutputStream monitorOut) {
        super();
        this.out = out;
        this.monitorOut = monitorOut;
    }

    /* (non-Javadoc)
     * @see java.io.OutputStream#close()
     */
    public void close() throws IOException {
        out.close();
    }

    /* (non-Javadoc)
     * @see java.io.OutputStream#flush()
     */
    public void flush() throws IOException {
        out.flush();
    }


    /* (non-Javadoc)
     * @see java.io.OutputStream#write(byte[], int, int)
     */
    public void write(byte[] b, int off, int len) throws IOException {
        out.write(b, off, len);
        try {
            monitorOut.write(b, off, len);
            monitorOut.flush();
        }
        catch(IOException ioe) {
        }
    }

    /* (non-Javadoc)
     * @see java.io.OutputStream#write(byte[])
     */
    public void write(byte[] b) throws IOException {
        out.write(b);
        try {
            monitorOut.write(b);
            monitorOut.flush();
        }
        catch(IOException ioe) {
        }
    }

    public void write(int b) throws IOException {
        out.write(b);
        try {
            monitorOut.write(b);
            monitorOut.flush();
        }
        catch(IOException ioe) {
        }
    }

  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区免费| 色婷婷av一区二区三区之一色屋| 欧美精品日日鲁夜夜添| 亚洲成人午夜电影| 在线成人免费视频| 久久国产精品99久久人人澡| 精品国产91洋老外米糕| 国产高清亚洲一区| 中文字幕在线免费不卡| 在线看日本不卡| 亚洲成人手机在线| 欧美va亚洲va在线观看蝴蝶网| 久久99日本精品| 国产网红主播福利一区二区| youjizz久久| 亚洲成a人v欧美综合天堂下载| 日韩一区二区三区免费看 | 成人av影院在线| 亚洲精品视频一区| 欧美一区二区三区免费视频| 国产一本一道久久香蕉| 亚洲欧美成人一区二区三区| 26uuu成人网一区二区三区| 懂色中文一区二区在线播放| 亚洲精品国产视频| 精品国精品国产尤物美女| eeuss鲁片一区二区三区在线观看| 亚洲在线中文字幕| 久久亚洲影视婷婷| 色视频成人在线观看免| 极品少妇一区二区三区精品视频| 国产精品久久夜| 欧美嫩在线观看| 成人黄色免费短视频| 日韩制服丝袜先锋影音| 国产精品久久久久影院色老大| 欧美情侣在线播放| 99久久99久久精品免费观看| 美女性感视频久久| 亚洲人成影院在线观看| 2023国产一二三区日本精品2022| 在线亚洲欧美专区二区| 国产精品一区二区在线播放 | 欧美综合一区二区三区| 男女视频一区二区| 亚洲精品乱码久久久久久| 日韩久久久久久| 精品视频色一区| 99re亚洲国产精品| 国产精品主播直播| 奇米在线7777在线精品| 亚洲激情在线激情| 中文字幕免费不卡在线| 日韩欧美国产wwwww| 欧美性做爰猛烈叫床潮| 波多野结衣中文字幕一区二区三区| 免费在线观看不卡| 亚洲成人福利片| 亚洲激情男女视频| 日韩一区欧美一区| 国产欧美日韩在线看| 日韩视频在线你懂得| 欧美男生操女生| 欧美日韩视频不卡| 91成人国产精品| 91国偷自产一区二区开放时间| 成人深夜视频在线观看| 高清免费成人av| 国产精品亚洲第一| 国产一区999| 国产精品一二三区在线| 蜜桃av噜噜一区| 日本va欧美va精品发布| 亚洲成人资源在线| 三级不卡在线观看| 日韩国产欧美一区二区三区| 日韩和欧美一区二区| 五月激情综合网| 亚洲aⅴ怡春院| 日韩高清电影一区| 美国十次综合导航| 精品一区二区三区视频在线观看| 美腿丝袜亚洲综合| 久久精品国产精品亚洲精品| 精一区二区三区| 精一区二区三区| 国产精品18久久久久久vr| 国产中文一区二区三区| 国产精品一区二区不卡| 成人短视频下载| 99re这里只有精品6| 欧美国产日韩在线观看| 国产喂奶挤奶一区二区三区| 国产精品久久久久久久浪潮网站| 亚洲欧美自拍偷拍色图| 一区二区三区欧美亚洲| 婷婷久久综合九色综合绿巨人| 日韩黄色在线观看| 国产精品伊人色| av一区二区三区四区| 欧洲色大大久久| 日韩一二三区视频| 久久久久久亚洲综合| 亚洲人成网站在线| 天堂在线一区二区| 国产成人在线免费观看| 91网站视频在线观看| 欧美日韩一区二区三区免费看| 日韩午夜电影av| 日韩一区日韩二区| 午夜精品福利一区二区三区av| 免费成人在线视频观看| 成人黄色一级视频| 欧美日韩在线三级| 久久久国产精品不卡| 亚洲激情成人在线| 国产中文一区二区三区| 色婷婷激情久久| 亚洲精品一区二区在线观看| 亚洲视频一区二区免费在线观看| 日本成人超碰在线观看| 成人va在线观看| 日韩欧美国产三级电影视频| 亚洲欧美在线视频观看| 久久成人18免费观看| 91一区二区在线观看| 欧美电影精品一区二区| 亚洲一区中文日韩| 国产成人亚洲精品青草天美| 欧美三电影在线| 日本一区二区三区四区在线视频| 性做久久久久久久久| caoporn国产一区二区| 欧美videos大乳护士334| 一区二区日韩av| 成人国产精品免费网站| 日韩一区二区高清| 亚洲精品国久久99热| 国产成人精品免费网站| 欧美一级夜夜爽| 亚洲国产日韩在线一区模特| 成人一区二区三区视频| 日韩欧美中文字幕一区| 亚洲国产综合人成综合网站| 岛国精品在线播放| 久久综合网色—综合色88| 日韩在线一区二区| 欧美日韩在线观看一区二区 | 欧美一级理论性理论a| 亚洲乱码中文字幕综合| 成人美女视频在线观看| 欧美精品一区二区三区很污很色的| 亚洲6080在线| 欧美无砖专区一中文字| 亚洲欧美日韩综合aⅴ视频| 国产91精品一区二区| 精品日韩一区二区| 久久99精品久久久久久久久久久久| 欧美三级日本三级少妇99| 依依成人精品视频| 色国产综合视频| 尤物av一区二区| 91黄视频在线| 亚洲综合色在线| 欧美日韩国产片| 天堂午夜影视日韩欧美一区二区| 日本韩国一区二区三区视频| 亚洲精选免费视频| 91麻豆高清视频| 亚洲综合另类小说| 欧美艳星brazzers| 午夜视频在线观看一区二区| 欧美日韩免费一区二区三区 | 精品视频1区2区3区| 亚洲综合免费观看高清完整版在线 | 欧美高清视频不卡网| 亚洲国产精品自拍| 欧美精品一二三| 麻豆精品在线播放| 久久久综合精品| 国产毛片精品视频| 国产精品午夜在线观看| 99r国产精品| 亚洲成国产人片在线观看| 69p69国产精品| 精东粉嫩av免费一区二区三区| 久久久久久久久99精品| 成人成人成人在线视频| 一区二区视频免费在线观看| 欧美亚洲国产bt| 麻豆freexxxx性91精品| 日本一区二区三区电影| 成人黄色网址在线观看| 亚洲图片一区二区| 日韩精品在线网站| 波多野结衣精品在线| 亚洲一级二级在线| 欧美一区2区视频在线观看| 国产不卡在线一区| 亚洲国产精品久久不卡毛片|