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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? proxyserver.java

?? java 的程序集合,會節(jié)省你很多時間的,有兩個包.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.io.*;
import java.net.*;
import java.util.*;
// main() 方法啟動代理服務(wù)器。具體由內(nèi)嵌的Proxy類實現(xiàn)
public class ProxyServer {
public static void main(String[] args) {
try {
// 檢查args參數(shù)數(shù)
if ((args.length == 0) || (args.length % 3 != 0))
throw new IllegalArgumentException("Wrong number of args");
// 創(chuàng)建Server對象
Server s = new Server(null, 12);
// 對每個循環(huán)創(chuàng)建一個 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);
}
}

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

// 記住代理的主機(jī)和端口
public Proxy(String host, int port) {
this.host = host;
this.port = port;
}
// 當(dāng)有一個客戶端連接時服務(wù)器端調(diào)用這個方法
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;
// 建立到某一個服務(wù)器端端口的連接并返回出錯信息
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;
}
// 建立一個數(shù)組保存兩個線程。
final Thread[] threads = new Thread[2];
// 建立一個線程從客戶端到服務(wù)器端拷貝數(shù)據(jù)
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 {
// 當(dāng)線程任務(wù)結(jié)束時
try {
server.close();
to_client.close();
from_client.close();
}
catch (IOException e) {}
}
}
};
// 建立一個線程從服務(wù)器端到客戶端拷貝數(shù)據(jù).
// 這些線程和上面那個工作機(jī)理一樣
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(); // 關(guān)閉服務(wù)器
to_client.close();
from_client.close();
} catch (IOException e) {}
}
}
};
// 把線程保存在 threads[]數(shù)組中以便匿名類之間可以相互引用
threads[0] = c2s; threads[1] = s2c;
// 啟動線程
c2s.start(); s2c.start();
// 等待他們退出
try { c2s.join(); s2c.join(); } catch (InterruptedException e) {}
}
}
}

// 下面的多線程server類框架,實現(xiàn)對端口的監(jiān)聽和數(shù)據(jù)傳輸?shù)膶崟r控制
class Server {   // 定義Server 類
// server的狀態(tài)量
Map services;
Set connections;
int maxConnections;
ThreadGroup threadGroup;
PrintWriter logStream;
public Server(OutputStream logStream, int maxConnections) { // 構(gòu)造函數(shù)
setLogStream(logStream);
log("Starting server"); // 記錄日志信息
threadGroup = new ThreadGroup(Server.class.getName());
this.maxConnections = maxConnections;
services = new HashMap();
connections = new HashSet(maxConnections);
}

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

// 記錄日志函數(shù)
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在特定端口開特定服務(wù)
public synchronized void addService(Service service, int port)  throws IOException
{
Integer key = new Integer(port);
// 檢查在某個端口是否已經(jīng)有其它service
if (services.get(key) != null)
throw new IllegalArgumentException("端口 " + port +" 已經(jīng)被使用.");
// 創(chuàng)建監(jiān)聽類來監(jiān)聽端口的連接情況
Listener listener = new Listener(threadGroup, port, service);
// 保存在哈希表中
services.put(key, listener);
// 寫log
log("啟動服務(wù): " + service.getClass().getName() + " 端口為: " + port);
// 開始監(jiān)聽
listener.start();
}

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

// 下面是一個監(jiān)聽器,它監(jiān)聽來自某一個特定端口的連接。
// 當(dāng)它獲得一個連接請求時,它調(diào)用服務(wù)器的addConnection()方法來接受或拒絕連接
public class Listener extends Thread {
ServerSocket listen_socket;    // 監(jiān)聽連接的套接字
int port;                      // 端口
Service service;               // 在端口上實現(xiàn)的服務(wù)
volatile boolean stop = false; // 標(biāo)志是否被請求停止
// 創(chuàng)建一個服務(wù)器套接字來監(jiān)聽某個特定端口的連接
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;              // 設(shè)置停止標(biāo)志位
this.interrupt();              // 停止阻斷accept()
try { listen_socket.close(); } // 停止監(jiān)聽.
catch(IOException e) {}
}


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

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美福利视频一区| 成人一区二区在线观看| 在线播放中文一区| 日韩一区欧美二区| 91精品国产综合久久婷婷香蕉| 亚洲福利一二三区| 欧美日韩国产综合久久| 偷拍一区二区三区四区| 日韩欧美色综合| 国产综合久久久久久鬼色 | 91丨国产丨九色丨pron| 最新日韩在线视频| 欧美亚男人的天堂| 日韩激情一区二区| www久久精品| av在线综合网| 亚洲成人精品一区二区| 91精品国产91久久久久久一区二区 | 首页欧美精品中文字幕| 欧美日韩一区中文字幕| 天天影视色香欲综合网老头| 日韩精品一区二区在线| 成人网在线免费视频| 亚洲一区在线观看免费| 精品精品欲导航| www.av亚洲| 日韩中文字幕1| 亚洲国产成人在线| 欧美日韩卡一卡二| 国产成人亚洲综合a∨婷婷| 亚洲另类在线视频| 日韩欧美美女一区二区三区| eeuss鲁一区二区三区| 五月天一区二区三区| 国产欧美视频一区二区三区| 欧美在线一二三四区| 国产麻豆午夜三级精品| 亚洲一区在线视频| 日本一二三四高清不卡| 91精品国产综合久久小美女| 91在线观看下载| 精品在线播放免费| 亚洲第一会所有码转帖| 欧美国产在线观看| 日韩欧美成人激情| 欧洲av一区二区嗯嗯嗯啊| 国产福利一区二区三区| 日本亚洲电影天堂| 亚洲欧美激情小说另类| 久久久久久久久久久久电影 | 久久综合av免费| 欧美人与禽zozo性伦| 99久久久无码国产精品| 久久成人免费电影| 肉肉av福利一精品导航| 亚洲美女屁股眼交3| 欧美激情一区二区三区四区| 精品奇米国产一区二区三区| 欧美日韩国产精品自在自线| 色综合一个色综合亚洲| 丁香婷婷综合色啪| 国产一区福利在线| 国模套图日韩精品一区二区 | 亚洲高清视频在线| 日韩美女精品在线| 国产丝袜美腿一区二区三区| 精品国产乱码久久久久久久| 日韩一级高清毛片| 91精品久久久久久久91蜜桃| 欧美三级日韩三级国产三级| 色菇凉天天综合网| 欧美在线观看18| 欧洲国内综合视频| 欧美性色黄大片| 91丨九色丨黑人外教| 99re在线精品| 一本高清dvd不卡在线观看| 91麻豆123| 在线一区二区三区四区五区| 色综合色综合色综合| 91色视频在线| 色综合 综合色| 日本电影欧美片| 欧美性videosxxxxx| 欧美最猛性xxxxx直播| 色av成人天堂桃色av| 欧美日韩高清一区二区不卡| 欧美日韩精品三区| 欧美一区二区三区在线电影| 日韩欧美黄色影院| 久久综合九色综合欧美就去吻| 久久在线免费观看| 国产精品三级电影| 亚洲三级在线免费观看| 亚洲精品欧美激情| 日韩avvvv在线播放| 精品一区二区在线播放| 国产成人综合在线观看| 91一区在线观看| 欧美日韩三级一区| 精品福利av导航| 国产精品伦理在线| 一区二区国产视频| 激情综合一区二区三区| 成人毛片在线观看| 在线观看网站黄不卡| 精品日韩99亚洲| 亚洲男同1069视频| 日韩电影网1区2区| 波多野结衣欧美| 欧美日韩成人综合在线一区二区| 日韩三级免费观看| 中文字幕一区二区在线播放| 亚洲国产精品麻豆| 国产乱妇无码大片在线观看| 色综合久久综合中文综合网| 日韩免费电影网站| 国产精品电影院| 蜜臀av在线播放一区二区三区 | 一区二区三区免费观看| 蜜乳av一区二区三区| 成人精品免费网站| 91麻豆精品国产无毒不卡在线观看| 久久久精品人体av艺术| 午夜影院久久久| 成av人片一区二区| 日韩欧美国产麻豆| 一区二区三区四区视频精品免费| 精品一区二区免费看| 欧美伊人久久久久久久久影院| 久久综合色婷婷| 日韩av中文字幕一区二区三区| 成人免费精品视频| 精品三级av在线| 亚洲成av人片一区二区三区| 成人综合在线观看| 精品成人一区二区| 亚洲电影欧美电影有声小说| 不卡av电影在线播放| 欧美成人vps| 日韩在线一区二区| 色94色欧美sute亚洲线路一久| 国产人久久人人人人爽| 欧美aⅴ一区二区三区视频| 91色.com| 国产精品嫩草99a| 久久精品av麻豆的观看方式| 欧美网站一区二区| 亚洲欧洲国产日本综合| 国产美女精品人人做人人爽| 欧美一级xxx| 亚欧色一区w666天堂| 色香色香欲天天天影视综合网| 日本一区二区电影| 国产剧情一区二区三区| 欧美一区二区精品在线| 午夜精品久久久久久| 日本乱人伦一区| 亚洲激情自拍偷拍| 91在线云播放| 亚洲欧美在线另类| 国产91露脸合集magnet| 久久久久久麻豆| 国产一区二区不卡| 久久精品网站免费观看| 久久国产福利国产秒拍| 日韩女优毛片在线| 看电视剧不卡顿的网站| 日韩一区二区三区av| 奇米精品一区二区三区四区| 日韩一区二区三区在线观看 | 337p日本欧洲亚洲大胆精品| 麻豆91精品91久久久的内涵| 日韩一区二区影院| 久久av老司机精品网站导航| 精品免费视频一区二区| 韩国毛片一区二区三区| 久久久综合激的五月天| 国产jizzjizz一区二区| 中文字幕亚洲在| 91黄色激情网站| 午夜视频在线观看一区二区三区| 在线播放欧美女士性生活| 久久99国产精品免费| 久久婷婷一区二区三区| 高清成人免费视频| 亚洲乱码一区二区三区在线观看| 日本乱人伦aⅴ精品| 三级不卡在线观看| 久久久久久免费网| 色天使色偷偷av一区二区| 石原莉奈一区二区三区在线观看| 日韩视频在线你懂得| 成人av影视在线观看| 亚洲一级二级三级| 日韩免费观看高清完整版在线观看| 国产麻豆精品一区二区| 亚洲免费av观看| 亚洲精品一区二区三区蜜桃下载| 99在线精品观看|