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

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

?? proxyserver.java

?? 簡單介紹java基本應用
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.io.*;
import java.net.*;
import java.util.*;
// main() 方法啟動代理服務器。具體由內嵌的Proxy類實現
public class ProxyServer {
public static void main(String[] args) {
try {
// 檢查args參數數
if ((args.length == 0) || (args.length % 3 != 0))
throw new IllegalArgumentException("Wrong number of args");
// 創建Server對象
Server s = new Server(null, 12);
// 對每個循環創建一個 Proxy并把它添加到 server.
int i = 0;
while(i < args.length) {
String host = args[i++];
int remoteport = Integer.parseInt(args[i++]);
int localport = Integer.parseInt(args[i++]);
s.addService(new Proxy(host, remoteport), localport);
}
}
catch (Exception e) {  // 若出錯打印錯誤信息
System.err.println(e);
System.err.println("Usage: java ProxyServer " +"<host> <remoteport> <localport> ...");
System.exit(1);
}
}

// 接下來是一個實現了代理服務的類。當有客戶端連接時調用serve()方法
// 此時必須首先建立一個連接并在客戶和服務器端之間傳輸數據
// 這個類實現了兩個相似線程作為匿名類, 一個線程從客戶端拷貝數據到服務器端
// 另一個從服務器端到客戶端拷貝數據。線程調用serve()方法創建和啟動這些線程,然后等待
// 它們退出
public static class Proxy implements Server.Service {
String host;
int port;

// 記住代理的主機和端口
public Proxy(String host, int port) {
this.host = host;
this.port = port;
}
// 當有一個客戶端連接時服務器端調用這個方法
public void serve(InputStream in, OutputStream out) {
final InputStream from_client = in;
final OutputStream to_client = out;
final InputStream from_server;
final OutputStream to_server;
// 建立到某一個服務器端端口的連接并返回出錯信息
final Socket server;
try {
server = new Socket(host, port);
from_server = server.getInputStream();
to_server = server.getOutputStream();
}
catch (Exception e) {
PrintWriter pw = new PrintWriter(new OutputStreamWriter(out));
pw.print("Proxy server could not connect to " + host +":" + port + "\n");
pw.flush();
pw.close();
try { in.close(); } catch (IOException ex) {}
return;
}
// 建立一個數組保存兩個線程。
final Thread[] threads = new Thread[2];
// 建立一個線程從客戶端到服務器端拷貝數據
Thread c2s = new Thread() {
public void run() {
byte[] buffer = new byte[2048];
int bytes_read;
try {
while((bytes_read=from_client.read(buffer))!=-1) {
to_server.write(buffer, 0, bytes_read);
to_server.flush();
}
}
catch (IOException e) {}
finally {
// 當線程任務結束時
try {
server.close();
to_client.close();
from_client.close();
}
catch (IOException e) {}
}
}
};
// 建立一個線程從服務器端到客戶端拷貝數據.
// 這些線程和上面那個工作機理一樣
Thread s2c = new Thread() {
public void run() {
byte[] buffer = new byte[2048];
int bytes_read;
try {
while((bytes_read=from_server.read(buffer))!=-1) {
to_client.write(buffer, 0, bytes_read);
to_client.flush();
}
}
catch (IOException e) {}
finally {
try {
server.close(); // 關閉服務器
to_client.close();
from_client.close();
} catch (IOException e) {}
}
}
};
// 把線程保存在 threads[]數組中以便匿名類之間可以相互引用
threads[0] = c2s; threads[1] = s2c;
// 啟動線程
c2s.start(); s2c.start();
// 等待他們退出
try { c2s.join(); s2c.join(); } catch (InterruptedException e) {}
}
}
}

// 下面的多線程server類框架,實現對端口的監聽和數據傳輸的實時控制
class Server {   // 定義Server 類
// server的狀態量
Map services;
Set connections;
int maxConnections;
ThreadGroup threadGroup;
PrintWriter logStream;
public Server(OutputStream logStream, int maxConnections) { // 構造函數
setLogStream(logStream);
log("Starting server"); // 記錄日志信息
threadGroup = new ThreadGroup(Server.class.getName());
this.maxConnections = maxConnections;
services = new HashMap();
connections = new HashSet(maxConnections);
}

// 一個公共的方法 來設置當前登陸流,傳遞null來關閉登陸
public synchronized void setLogStream(OutputStream out) {
if (out != null) logStream = new PrintWriter(out);
else logStream = null;
}

// 記錄日志函數
protected synchronized void log(String s) {
if (logStream != null) {
logStream.println("[" + new Date() + "] " + s);
logStream.flush();
}
}

protected void log(Object o) { log(o.toString()); }   // 把某個對象object寫入log

// 使server在特定端口開特定服務
public synchronized void addService(Service service, int port)  throws IOException
{
Integer key = new Integer(port);
// 檢查在某個端口是否已經有其它service
if (services.get(key) != null)
throw new IllegalArgumentException("端口 " + port +" 已經被使用.");
// 創建監聽類來監聽端口的連接情況
Listener listener = new Listener(threadGroup, port, service);
// 保存在哈希表中
services.put(key, listener);
// 寫log
log("啟動服務: " + service.getClass().getName() + " 端口為: " + port);
// 開始監聽
listener.start();
}

// 使server停止某個端口上的服務
public synchronized void removeService(int port) {
Integer key = new Integer(port);  // 哈希表關鍵字
// 在哈希表中查找對某個端口的監聽對象
final Listener listener = (Listener) services.get(key);
if (listener == null) return;
// 使得監聽器停止
listener.pleaseStop();
// 從哈希表中刪除
services.remove(key);
// 寫log.
log("停止服務: " + listener.service.getClass().getName() + " 端口: " + port);
}
}

// 下面是一個監聽器,它監聽來自某一個特定端口的連接。
// 當它獲得一個連接請求時,它調用服務器的addConnection()方法來接受或拒絕連接
public class Listener extends Thread {
ServerSocket listen_socket;    // 監聽連接的套接字
int port;                      // 端口
Service service;               // 在端口上實現的服務
volatile boolean stop = false; // 標志是否被請求停止
// 創建一個服務器套接字來監聽某個特定端口的連接
public Listener(ThreadGroup group, int port, Service service) throws IOException
{
super(group, "Listener:" + port);
listen_socket = new ServerSocket(port);
// 給出一個非零超時信號使得accept()被中斷
listen_socket.setSoTimeout(600000);
this.port = port;
this.service = service;
}

// 停止接收連接
public void pleaseStop() {
this.stop = true;              // 設置停止標志位
this.interrupt();              // 停止阻斷accept()
try { listen_socket.close(); } // 停止監聽.
catch(IOException e) {}
}


// 等待連接請求,接受,接著把socket傳給sever的addConnection方法
public void run() {
while(!stop) {      // 循環直到要求停止
try {
Socket client = listen_socket.accept();
addConnection(client, service);
}
catch (InterruptedIOException e) {}
catch (IOException e) {log(e);}
}
}

// 當接受客戶端連接以后這個方法將會被監聽器調用
// 或者創建一個連接類,或者把這個連接加入到現有的連接列表中,抑或關閉連接
protected synchronized void addConnection(Socket s, Service service) {
// 如果到達連接上限
if (connections.size() >= maxConnections) {
try {
// 則告訴客戶端正在被拒絕.
PrintWriter out = new PrintWriter(s.getOutputStream());
out.print("連接被拒絕; " +"服務器忙,請稍后再試.\n");
out.flush();
//關閉連接
s.close();
// 寫log
log("連接被拒絕:" +s.getInetAddress().getHostAddress() +
":" + s.getPort() + ": 達到最大連接數.");
} catch (IOException e) {log(e);}
}
else {  // 如果連接數未到上限
// 創建一個線程處理連接
Connection c = new Connection(s, service);
// 并把它添加到當前連接列表中
connections.add(c);
// 把這個新的連接寫入log
log("Connected to " + s.getInetAddress().getHostAddress() +":" + s.getPort() + " on port " +
s.getLocalPort() +" for service " + service.getClass().getName());
// 開始連接線程提供服務

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黑人巨大精品欧美一区| 亚洲欧美影音先锋| 在线中文字幕不卡| 成人aa视频在线观看| 国产成人精品一区二| 国内偷窥港台综合视频在线播放| 免费成人在线观看| 国内精品免费**视频| 国产在线精品国自产拍免费| 国产美女视频一区| 国产精品18久久久久久vr| 精品在线观看免费| 国产综合成人久久大片91| 极品尤物av久久免费看| 国产激情精品久久久第一区二区 | 色综合激情五月| 91在线国产福利| 欧美午夜一区二区| 欧美一级黄色录像| 久久精品亚洲一区二区三区浴池| 国产人成亚洲第一网站在线播放| 欧美国产综合一区二区| 一区二区三区欧美日韩| 秋霞成人午夜伦在线观看| 狠狠色狠狠色合久久伊人| 成人app在线观看| 欧美日韩在线观看一区二区| 日韩午夜在线播放| 最新久久zyz资源站| 亚洲成人7777| 国产精华液一区二区三区| 在线精品视频免费观看| 制服丝袜av成人在线看| 久久久国产一区二区三区四区小说| 国产精品毛片无遮挡高清| 亚洲国产综合人成综合网站| 国产米奇在线777精品观看| 色婷婷av久久久久久久| 精品国精品国产| 午夜精品久久久久久久99樱桃| 久久成人综合网| 欧洲精品视频在线观看| 国产三级久久久| 午夜欧美电影在线观看| av一二三不卡影片| 精品黑人一区二区三区久久| 亚洲一区二区在线免费观看视频| 国产精品影视在线观看| 欧美日韩精品三区| 亚洲蜜桃精久久久久久久| 国产露脸91国语对白| 制服丝袜在线91| 亚洲美女屁股眼交3| 国产a精品视频| 欧美成人精品二区三区99精品| 亚洲综合一区二区精品导航| 成人性生交大片免费看视频在线 | 337p日本欧洲亚洲大胆精品| 亚洲狠狠爱一区二区三区| 99riav一区二区三区| 欧美国产日本韩| 国产精品一区二区在线播放 | 91丨九色porny丨蝌蚪| 久久久国产精品午夜一区ai换脸| 美女在线观看视频一区二区| 9191成人精品久久| 午夜精品久久久| 欧美伊人久久久久久午夜久久久久| 中文字幕在线不卡一区 | 91免费版在线看| 国产精品国产三级国产专播品爱网| 狠狠狠色丁香婷婷综合久久五月| 欧美一区二区三区思思人| 亚洲国产精品嫩草影院| 欧美亚洲国产一区二区三区va| 亚洲欧美成人一区二区三区| 色综合视频一区二区三区高清| 国产精品日日摸夜夜摸av| 成人美女视频在线观看18| 久久久久国色av免费看影院| 激情综合网天天干| 精品国产伦理网| 国产v综合v亚洲欧| 亚洲欧美在线aaa| 欧美亚洲动漫精品| 日韩福利视频网| 精品久久久久av影院 | 懂色av一区二区三区免费观看 | av在线不卡网| 亚洲色欲色欲www在线观看| 91麻豆蜜桃一区二区三区| 亚洲男人电影天堂| 欧美日韩五月天| 蜜桃视频在线观看一区| 精品福利一区二区三区免费视频| 国产精品一二三四五| 国产精品美女久久福利网站| 一本色道a无线码一区v| 青青草原综合久久大伊人精品 | 国产美女精品在线| 中文字幕亚洲综合久久菠萝蜜| 色老综合老女人久久久| 日韩精品一级二级| 国产丝袜在线精品| 色哟哟一区二区| 偷拍亚洲欧洲综合| 日本一区二区动态图| 欧美性猛交xxxxxx富婆| 久久国产精品露脸对白| 亚洲图片另类小说| 日韩一区二区三区在线| 成人小视频在线| 日本不卡视频在线观看| 一区免费观看视频| 日韩欧美的一区| 在线观看av不卡| 国产盗摄女厕一区二区三区| 亚洲午夜精品17c| 国产欧美一区二区精品性| 欧美精品一二三四| 成人激情免费网站| 国产真实精品久久二三区| 一区二区三区资源| 日本一区二区动态图| 日韩欧美国产综合在线一区二区三区| 91在线国产观看| 国产精品夜夜嗨| 蜜桃av一区二区三区| 一区二区三区四区在线免费观看 | 欧美日本免费一区二区三区| 成人丝袜高跟foot| 久久精品国产色蜜蜜麻豆| 亚洲成人av一区二区三区| 亚洲天堂2014| 国产人久久人人人人爽| 亚洲精品在线三区| 制服丝袜亚洲精品中文字幕| 91久久香蕉国产日韩欧美9色| 成人免费视频视频在线观看免费| 久久国产生活片100| 日韩在线一区二区| 亚洲国产精品一区二区久久| 亚洲美女免费在线| 亚洲欧美在线高清| 最新不卡av在线| 最新不卡av在线| 亚洲三级视频在线观看| 国产精品免费视频网站| 欧美极品xxx| 国产日产欧美一区| 欧美国产在线观看| 国产精品欧美精品| 国产午夜亚洲精品羞羞网站| 国产精品丝袜久久久久久app| xf在线a精品一区二区视频网站| 日韩丝袜情趣美女图片| 91麻豆精品国产综合久久久久久| 欧美日韩高清一区二区| 欧美精品黑人性xxxx| 欧美一级日韩免费不卡| 91精品国产综合久久香蕉的特点 | 久久99久久久久| 韩国一区二区在线观看| 国产精品18久久久久久久久久久久| 国产福利精品导航| 成人av在线电影| 欧美亚洲自拍偷拍| 欧美一区二区三区男人的天堂| 日韩欧美在线观看一区二区三区| 精品对白一区国产伦| 国产农村妇女毛片精品久久麻豆| 国产精品你懂的在线欣赏| 一区二区三区在线高清| 视频一区视频二区中文字幕| 美女视频网站黄色亚洲| 国产乱淫av一区二区三区| 9久草视频在线视频精品| 欧美影视一区二区三区| 欧美精品一区二区三区四区| 国产精品女上位| 日本成人在线不卡视频| 懂色av中文字幕一区二区三区| 一本到不卡精品视频在线观看| 欧美精品 日韩| 久久九九99视频| 亚洲无人区一区| 国产精品一区在线观看乱码| 91久久线看在观草草青青| 日韩午夜电影av| 亚洲精品国产无天堂网2021 | 波波电影院一区二区三区| 欧美日韩高清一区二区三区| 国产欧美1区2区3区| 亚洲成人高清在线| 成人性视频免费网站| 欧美丰满少妇xxxxx高潮对白| 中文字幕av在线一区二区三区| 亚洲成av人综合在线观看| 成人免费高清在线| 精品少妇一区二区三区|