JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 程式分享區 » Networking  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
話題被移動
該話題已被移動 - caterpillar , 2005-08-01 01:10
如果您尚不清楚該話題被移動的原因,請參考論壇規則以及本版公告或者聯系本版版主。
本主題所含的標籤
無標籤
作者 [網路] EasyPort - 陽春跳板
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-07-27 02:56 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
會寫這個程式的原因是,我姐公司有防火牆,只能使用Port 80連外,
這樣他休息時候都不能上bbs,所以我寫了一個像跳板的程式
讓她可以透過port 80連過來,再由我轉送到bbs上去
當然這個不限定是bbs啦,要拿來轉到http也可以,總之執行這個程式後
角色就類似中介者就是了~

介面是GUI的,我知道很醜,不過這不是我程式的重點,就懶得改了...

執行畫面:


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-07-27 02:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Executable Jar (Source code inside)

廣告詞我都想好了
跳,跳,跳乎夷送!! 跳,跳,跳尬買起笑....

EasyPort.jar (9.03k)


Yoshi edited on 2004-07-27 14:14
reply to postreply to post
YOSHI!
作者 簡單代理伺服器 [Re:Yoshi]
caterpillar

良葛格

版主

發文: 2587
積分: 70
於 2004-07-27 09:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
以前寫的,好像是改寫Oreilly的Java Network一書範例來的,順便貼過來。。。。。

=============================================================

代理伺服器的作用,就是作為連線來源端與連線目的端之間的橋樑,代理伺服器的功能有很多種,有作為網頁快取的代理伺服器,有作為防火牆功能的代理伺服器,有作為訊息過濾的代理伺服器等等。

1
客戶端 <---->  代理伺服器  <---->  目的伺服器


其實將代理伺服器的功能簡化至最基本時,其功能就是將連線來源端的訊息轉接至連線目的端,而連線目的端的訊息轉接至連線來源端,對連線來源端而言,代理伺服器像是伺服端,對連線目的端而言,代理伺服器像是客戶端。

訊息在代理伺服器時所作的處理,決定了代理伺服器的種類,如果它將網頁暫存在伺服器本身的儲存裝置,並供客戶端直接比對下載,它的作用就是網頁代理伺服器,如果它的作用在過濾進出代理伺服器的訊息,它的作用就有些像是防火牆的功能(當然必須實作低階的封包過濾才算真正是),您也可以設計一個代理伺服器,專門過濾掉網頁上的廣告部份。

下面這個程式即實作一個最簡單的代理伺服器功能,它將連線來源端的訊息轉接至連線目的端,而連線目的端的訊息轉接至連線來源端,為了簡化程式邏輯,這個程式一次只能服務一個連線:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.io.*;
import java.net.*;
 
public class SimpleProxyServer {
    public static void main(String[] args) {
        String host;      // 代理的對象主機
        int remoteport;   // 代理對象連接埠
        int localport;    // 本機連接埠
        BufferedReader buf;
 
        try {
            buf = new BufferedReader(new InputStreamReader(System.in));
 
            System.out.println("SimpleProxyServer v0.1");
            System.out.print("代理的對象主機: ");
            host = buf.readLine();
            System.out.print("代理對象連接埠: ");
            remoteport = Integer.parseInt(buf.readLine());
            System.out.print("本機連接埠: ");
            localport = Integer.parseInt(buf.readLine());
 
            runServer(host, remoteport, localport); 
        }
        catch(IOException e) {
            System.err.println(e.toString());
        }
    }
 
    public static void runServer(String host, int remoteport, int localport) {
        try {
            System.out.print("Proxy伺服器啟動...Port " + localport + "..");
            ServerSocket serverSkt = new ServerSocket(localport);
            System.out.println("OK!");
 
            while(true) {
                System.out.println("傾聽客戶端.....");
                Socket fromClientSkt = serverSkt.accept();
                System.out.println(fromClientSkt.getInetAddress() + "連線..");
 
                // 客戶端的來往訊息
                final BufferedInputStream fromClientMsg = 
                    new BufferedInputStream(fromClientSkt.getInputStream());
                PrintStream toClientMsg = 
                    new PrintStream(fromClientSkt.getOutputStream());
 
                // 伺服端的來往訊息
                final Socket toServerSkt = new Socket(host, remoteport);
                BufferedInputStream fromServerMsg = new BufferedInputStream(
                                  toServerSkt.getInputStream());
                final PrintStream toServerMsg = new 
                              PrintStream(toServerSkt.getOutputStream());
 
                // 由客戶端至伺服器的訊息溝通執行緒
                Thread client = new Thread() {
                    public void run() {
                        int read;
                        try {
                            while((read = fromClientMsg.read()) != -1) {
                                toServerMsg.write(read); 
                                toServerMsg.flush();
                            }
                        }
                        catch(IOException e) {}
 
                        // 中斷至伺服器的連線
                        try {
                            toServerSkt.close();
                        }
                        catch(IOException e) {
                            System.err.println(e.toString());
                        }
                    }
                };
 
                client.start();
 
                // 主執行緒為由伺服器至客戶端的訊息
                int read;
                try {
                    while((read = fromServerMsg.read()) != -1) {
                        toClientMsg.write(read);
                        toClientMsg.flush();
                    }
                }
                catch(IOException e) {};
 
                // 中斷與客戶端的連線
                try {
                    fromClientSkt.close();
                }
                catch(IOException e) {
                    System.err.println(e.toString());
                }
            }
        }
        catch(UnknownHostException e) {
            System.err.println(e.toString());
        }
        catch(IOException e) {
            System.err.println(e.toString());
        }
    }
}


您有幾個方法可以測試這個程式,首先啟動程式:
1
2
3
4
5
6
7
$ java SimpleProxyServer
SimpleProxyServer v0.1
代理的對象主機: 140.112.18.32
代理對象連接埠: 23
本機連接埠: 8888
Proxy伺服器啟動...Port 8888..OK!
傾聽客戶端.....


我們在本機8888連接埠啟動了代理伺服器,代理的對象是Maxwell BBS,接下來您可以直接telnet localhost 8888,本機所啟動的代理伺服器會幫您連線至Maxwell BBS,接下來的一切操作就與BBS操作相同了。

您也可以讓它代理一個Web伺服器,假設本機代理伺服器連接埠也設定為8888,當使用瀏覽器鍵入http://localhost:8888/時,您會發現瀏覽器自動連接至代理的網頁伺服器。

順便一提的是,即使這個代理伺服器程式很簡單到有些可笑,它並不是一無是處,還是有一個基本的作用:隱藏客戶端位址。找一台主機啟動這個程式,然後將您的連線都透過這台主機,別人基本上就看不到您的來源位址,看到的會是啟動該程式的主機位址。


reply to postreply to post
良葛格學習筆記
我的電子書
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-07-27 14:08 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Yoshi wrote:
Executable Jar (Source code inside)

廣告詞我都想好了
跳,跳,跳乎夷送!! 跳,跳,跳尬買起笑....


剛剛上傳了新的版本
解決了Blocked I/O造成使用者停止某個redirect service後,還要再一人連線進來才能真的停止的bug

其實我的程式差不多就是caterpillar上面po的multi-threading + GUI版本
我的每一個Redirect Service都是multi-thread的,可以服務多個使用者


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
pangyuliu

Spikeout GREAT



發文: 29
積分: 4
於 2004-08-02 11:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Yoshi wrote:
剛剛上傳了新的版本
解決了Blocked I/O造成使用者停止某個redirect service後,還要再一人連線進來才能真的停止的bug

其實我的程式差不多就是caterpillar上面po的multi-threading + GUI版本
我的每一個Redirect Service都是multi-thread的,可以服務多個使用者


請問一下
如果我公司是指能用PORT80連HTTP
我是不是要找一台電腦(譬如家中的電腦)來啟動這個程式
連線時連到那台電腦,程式就會把連線轉到GUI裡的remote ip
那邊去Question


reply to postreply to post
劍~舞
作者 Re:[網路] EasyPort - 陽春跳板 [Re:pangyuliu]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-08-02 16:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
pangyuliu wrote:
請問一下
如果我公司是指能用PORT80連HTTP
我是不是要找一台電腦(譬如家中的電腦)來啟動這個程式
連線時連到那台電腦,程式就會把連線轉到GUI裡的remote ip
那邊去Question


yes


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
OHNO

雨聲街



發文: 49
積分: 0
於 2004-08-02 17:34 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Post is deleted

caterpillar edited on 2004-11-20 11:07
reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:OHNO]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-08-02 23:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Post is deleted

caterpillar edited on 2004-11-20 11:07
reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
pangyuliu

Spikeout GREAT



發文: 29
積分: 4
於 2004-08-03 09:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Yoshi wrote:
我的網路也很爛,期待有緣人回答你吧
我連有鎖protocol的firewall這東西都沒聽過


通常是鎖PORT吧,所通訊協定的我也沒聽過Tongue
Yoshi兄的這個程式很好用,我可以在公司連BBS了
大感謝...Big Smile
未來有沒有可能只用一個PORT就可以轉到其他的BBS呢?


reply to postreply to post
劍~舞
作者 Re:[網路] EasyPort - 陽春跳板 [Re:pangyuliu]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2004-08-03 15:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
pangyuliu wrote:
通常是鎖PORT吧,所通訊協定的我也沒聽過Tongue
Yoshi兄的這個程式很好用,我可以在公司連BBS了
大感謝...Big Smile
未來有沒有可能只用一個PORT就可以轉到其他的BBS呢?


其實這個也不難..你用我的source code去改應該很容易
只要讓client連進proxy時,先做個登入的動作,然後再由user來輸入想要redirect的server即可

另一個偷吃步的方法是,redirect到一台Unix的機器,比如像學校提供的SunOS
如此一來你想要telnet到哪裡都不是問題了


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
popcorny

Jakarta 2%

版主

發文: 752
積分: 20
於 2004-08-03 21:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
其實可以在網路上找free的socks server
server開在80就好了
我是delegated
client是用e-border...XD
這樣可以transparant的把所有的連線都改走socks..^^

socks這個protocol很簡單
yoshi可以考慮寫寫看... 寫socks version4就好^^
socks4
socks5


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
kitty869





發文: 1
積分: 0
於 2005-03-23 16:10 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1.請問這個程式要怎麼使用啊

2.另一個偷吃步的方法是,redirect到一台Unix的機器,比如像學校提供的SunOS
如此一來你想要telnet到哪裡都不是問題了

IF 事 freebsd or linux 也要改程式嗎???

可否幫忙一下


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
kissking





發文: 1
積分: 0
於 2005-04-13 13:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
找不到free的socks server

但是找到了not free的socks server

http://socks5.net

昨天試了一下,真的可以在公司上MSN囉!!


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
umpdsa





發文: 44
積分: 0
於 2005-05-25 12:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
想請問IE…有可以在網址上使用
ftp://帳號:密碼@IPAddress

的方式來登入ftp上抓資料…

我以為…只要是從IE上以80 Port 進入 跳板 再轉到 21 Port 進入

ftp的IP位址可以進去的說<<等到連上之後再到「檔案/登入成」再打帳密>>

嗚~可是不行…請問有別的方法嗎?


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:umpdsa]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2005-05-25 23:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
umpdsa wrote:
想請問IE…有可以在網址上使用
ftp://帳號:密碼@IPAddress

的方式來登入ftp上抓資料…

我以為…只要是從IE上以80 Port 進入 跳板 再轉到 21 Port 進入

ftp的IP位址可以進去的說<<等到連上之後再到「檔案/登入成」再打帳密>>

嗚~可是不行…請問有別的方法嗎?


我有點看不懂你寫的情況

如果是用此程式當跳板,以port 80出去,到某個port 21的ftp站台的話

那應該是可以的


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
umpdsa





發文: 44
積分: 0
於 2005-05-27 02:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
嗯…Sorry可能我表達能力不太好…再說一次好了~

假設
跳板 主機IP: XXX.XXX.XXX.1
Ftp 主機IP: XXX.XXX.XXX.2

在開始程式後我設

Remote Port:21
Remote IPKissesXX.XXX.XXX.2 (ftp ip)
Local Port:80
按下「Add」後

接著打開IE 在「網址列」輸入
http://XXX.XXX.XXX.1

之後我是有看到我的Serv-U變成藍色…
(看樣子…程式是有進入到Serv-U的 21 Port)
只是接下來…只見IE會跑得爆慢的~直到「顯示找不到網頁」的那種錯@@

我帳號密碼本來是想在後面再按「檔案/登入成」輸入後登入
但連這樣的機會也沒有@@~

我也試過…在程式中的
Remote IP打:帳號:密碼@XXX.XXX.XXX.2

可是還是得到一樣的結果…!!請問會不會是我電腦自己有問題***@@"

謝謝!!


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:umpdsa]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2005-06-06 16:13 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
umpdsa wrote:
接著打開IE 在「網址列」輸入
http://XXX.XXX.XXX.1

之後我是有看到我的Serv-U變成藍色…
(看樣子…程式是有進入到Serv-U的 21 Port)
只是接下來…只見IE會跑得爆慢的~直到「顯示找不到網頁」的那種錯@@


我覺得滿奇怪的,你要連ftp怎麼會用http protocol...?

建議你先用ftp軟體去試看看(i.e. CuteFtp, WSFTP...etc)


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
umpdsa





發文: 44
積分: 0
於 2005-06-08 00:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
太好了…使用Ftp軟體的話就可以了Smile~~太感謝大大了!!

可是用IE的Ftp://XXX.XXX.XXX.XXX的方式還是不行@@

在這裡學到不少東西!!~真的很感謝^^


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
jumpinger





發文: 1
積分: 0
於 2005-06-26 06:24 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問大大,這個程式可以用嗎?
我執行之後也輸入了重新導向的IP和PORT,也沒發生什麼變化?
我一樣被擋在Proxy防火牆後面,還是說它不能突破防火牆?
我remote如下:
remote IP:211.72.49.154
remote Port:8080


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
evilspeed





發文: 1
積分: 0
於 2005-07-05 12:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問
如果要玩遊戲的話...
那我要如何知道遊戲的ip和它使用的port呢?


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
suhanjyun





發文: 66
積分: 0
於 2005-07-18 17:18 user profilesend a private message to usersend email to suhanjyunreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Redirect redirect = (Redirect) model.remove(index);
這段我看不太懂。可以解說一下嗎?


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:suhanjyun]
hkdennis2k





發文: 1926
積分: 6
於 2005-07-18 17:26 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
為何不使用 SSH 的 tunneling 就算了......

easyport 不能 remote 改動設定吧?
也沒有使用者認証

如果被無謂人發現的話會很麻煩的

有 NIO 的版本嗎?? 想參考一下...


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:suhanjyun]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2005-07-22 17:29 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
suhanjyun wrote:
Redirect redirect = (Redirect) model.remove(index);
這段我看不太懂。可以解說一下嗎?


每一個重導(Redirect)為一個object,加入到 JList 中
此行是在使用者要將某個redirect給取消時,從JList拿出此redirect的動作
緊接的下一行是 redirect.close() ,即執行此 redirect 關閉之I/O收尾動作


reply to postreply to post
YOSHI!
作者 Re:[網路] EasyPort - 陽春跳板 [Re:Yoshi]
bbkall57149





發文: 1
積分: 0
於 2007-04-03 21:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
好耶謝謝大大無私的奉獻嚕~"~
先宰來試試看了
收下嚕~


reply to postreply to post
作者 Re:[網路] EasyPort - 陽春跳板 [Re:umpdsa]
playbos





發文: 1
積分: 0
於 2007-05-05 17:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感謝大大分享這麼棒的軟體~
讚啦!多謝告知~真是好東西阿~~


reply to postreply to post
go to first page go to previous page  1   2  go to next page go to last page
» JWorld@TW »  Java 程式分享區 » Networking

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8