[100] B2D+TCL+SDX+Echo Server

資料通訊與網路-課程版面-授課教授:XO

版主: b80203, ghost3401, XO, maa, siegf

分享到: Facebook

[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週四 11月 03, 2011 10:44 pm

請大家串聯.....相關心得&教學分享!!!

我慢慢根據老師題意做相關教學分享;不要怪我最後一天才做,童鞋們都沒有分享你們的心得T_T

XO 寫:
  1. 開啟 B2D Server (包括重抓 IP、搞定防火牆設定...)
  2. 在 B2D Server 裡,下載、安裝、設定、...弄妥 tclkit、sdx
  3. SSH Secure Shell 從外頭聯入 B2D Server,上傳 那組 Java 版 Echo Server、
    Counter Server、Multi-Thread Echo Server & Brodcasting Echo Server 到
    B2D Server, 在 Linux 裡重新編譯。
  4. 執行各式 Echo Servers 與 sdx httpd ...
  5. 由外頭 Windows 環境去 access B2D 裡的 Echo Servers
透過 WireShark & Ethereal 去擷取往來資料封包。

反過來把 Echo Servers 跑在 Hosting OS Windows 環境,然後從虛擬機 B2D Linux Server
去 Access Windows 裡的 Echo Servers. ... 錄製往來封包ㄇㄟ...


教學如下(請注意,步驟有順序性,並請先完成[100] DC實作軟體環境建置中的相關安裝與設定)
  1. 開啟 B2D Server (包括重抓 IP、搞定防火牆設定...)

    抓IP、更新防火牆:[99] 1022實習內容(VMware Player) 第五步驟
  2. 在 B2D Server 裡,下載、安裝、設定、...弄妥 tclkit、sdx

    參考這兩篇:
    我在此結合 SSH 連線,結合這兩篇寫出完整教學:

    1. 得到自己IP後,用SSH連線:

      利用 ifconfig,得到自己 IP,我的是 192.168.3.162,每個人電腦可能都不一樣

      圖檔

      開啟SSH Secure Shell Client:(桌面上沒有捷徑的,到程式集裡面找)

      圖檔

      輸入自己IP(圖上面的IP是我環境的IP)

      圖檔

      密碼為b2d

      圖檔

      確定

      圖檔

      連線成功

      圖檔
    2. 用wget下載 tclkit 舊版:

      安裝舊版原因:
      XO 寫:在 B2D Server 上,你可以選擇 dynamic link 或 Static link 版本,然 dynamic link 會需要 libstdc++.so
      動態鏈結的程式庫,太新版本的 tclkit 會期待 libstdc++.so.6 的版本,可是我們這 2005 年 12 月出產
      的 B2D 只有 libstdc++.so.5,所以我說如果是採 dynamic link 版本的 tclkit 就要用舊一點兒的版本,再
      不然用 static link 版本的 tclkit。Static link 的意思是說 tclkit 在編譯鏈結時,直接把 libstdc++.so.6 納
      入 tclkit 執行檔裡,不在需要在執行時去動態鏈結 libstdc++.so 程式庫。


      下載網址 http://equi4.com/tclkit/download.html

      圖檔

      右鍵複製8.4.13的連結網址

      圖檔

      在SSH下輸入指令wget+剛剛複製的網址 (其實直接複製以下指令就可以了,上面只是告訴大家在哪邊下載^o^)
      代碼: 選擇全部
      wget http://www.equi4.com/pub/tk/8.4.13/tclkit-linux-x86-static.gz


      注意,貼上的時候,請在SSH下按右鍵選Paste貼上,這邊不能夠用快捷鍵Ctrl+C,因為Ctrl+C在SSH下是中斷指令的意思

      圖檔
    3. 用wget下載 sdx.kit:

      下載網址 http://equi4.com/tclkit/download.html

      點選SDX > /pub/sk/

      圖檔

      右鍵複製 sdx.kit 網址

      圖檔

      在SSH下輸入指令wget+剛剛複製的網址(其實直接複製以下指令就可以了,上面只是告訴大家在哪邊下載^o^)
      代碼: 選擇全部
      wget http://equi4.com/pub/sk/sdx.kit

    4. 建置Tcl 與 SDX

      在SSH貼上以下指令,解壓縮 tclkit-linux-x86-static.gz 與更改 sdx.kit & tclkit-linux-x86-static 為執行檔

      可用ls指令檢查,是否有改為執行檔:

      代碼: 選擇全部
      gunzip tclkit-linux-x86-static.gz
      chmod +x sdx.kit
      chmod +x tclkit-linux-x86-static


      圖檔

      更改檔案名稱,這樣以後用sdx, tclkit 就不需要用打sdx.kit, tclkit-linux-x86-static;在SSH輸入以下指令:
      代碼: 選擇全部
      mv sdx.kit sdx
      mv tclkit-linux-x86-static tclkit


      以ls指令檢查,名稱改變了

      圖檔

      簡化執行方式, 移動檔案到環境變數PATH的路徑下(就好像在win環境下,我們可以直接用java, javac)在SSH輸入以下指令:
      代碼: 選擇全部
      mv tclkit /usr/bin
      mv sdx /usr/bin


      以which檢查 tclkit 及 sdx 的位置,是否有在/usr/bin 位置下

      圖檔

      完成 tclkit 建置,接著啟動sdx http server,先在根目錄建立wwwroot;在SSH輸入以下指令:
      代碼: 選擇全部
      mkdir /wwwroot


      由於要啟動sdx http server,在根目錄中需要index.html的網頁,先回到 Windows 以Notepad++建立,

      複製以下簡單HTML,另存檔名為 index.html:

      代碼: 選擇全部
      <html>
      <head>
         <title>index</title>
      </head>
      <body>
         Hello world!
      </body>
      </html>


      透過 SSH 上傳 index.html 到/wwwroot

      圖檔

      圖檔

      圖檔

      最後啟動sdx http server,在SSH輸入以下指令:
      (port用8080,因為80已經被b2d的http server用走;使用/wwwroot 和 ./wwwroot 差別在wwwroot這個資料夾建立在哪裡,在這個教學我是建在根目錄,所以使用/wwwroot,如果建在SSH連線的目錄下,就要使用./wwwroot)
      代碼: 選擇全部
      sdx httpd -port 8080 -root [color=red]/wwwroot[/color]


      圖檔

      打開瀏覽器,輸入自己虛擬機器IP接:8080,測試sdx http server

      圖檔
  3. SSH Secure Shell 從外頭聯入 B2D Server,上傳 那組 Java 版 Echo Server、
    Counter Server、Multi-Thread Echo Server & Brodcasting Echo Server 到
    B2D Server, 在 Linux 裡重新編譯。


    這部分簡單多囉!!!!

    1. 下載 Java Echo Server 相關教材:
      首先,請至這篇附件下載 Java Echo Server 相關教材:[98] 再訪 Socket Programming

      至於Echo Server相關原理、內容及執行方法,也請參考該篇。
    2. 透過SSH上傳至B2D

      將上述 Java Echo Server 程式碼,解壓縮,預設在971130資料夾,我是解壓縮到D槽

      方便起見,我們直接將981130資料夾上傳到B2D中:

      圖檔

    3. 編譯Echo Server 相關檔案

      回到SSH Secure Shell,如果SDX還在執行的,先按Ctrl+C中斷,才能繼續打指令

      以cd指令切換到我們剛剛上傳的資料夾981130:
      代碼: 選擇全部
      cd 981130


      編譯部分.java檔 (有些檔案我們B2D無法編譯,版本過舊):
      代碼: 選擇全部
      javac ClientHandler.java
      javac Counter.java
      javac CounterServer.java
      javac EchoClient.java
      javac EchoServer.java
      javac Worker.java
      javac Listener.java
      javac MultiEchoServer.java
      javac MultiListener.java


      圖檔
  4. 執行各式 Echo Servers 與 sdx httpd ...

    windows 的 Echo Server執行方法請見..[98] 再訪 Socket Programming,在此僅簡單說明在B2D下執行方法,因為和windows很類似:

    1. 執行EchoServer(我的執行方式是透過SSH,也可以在B2D下開啟命令提示字元完成)

      利用SSH,於981130資料夾下輸入java EchoServer,執行EchoServer:
      代碼: 選擇全部
      java EchoServer


      圖檔
    2. 執行EchoClient

      根據上圖新增連線視窗,再開一個SSH連線,切換目錄到981130,輸入java EchoClient,執行Client程式:

      以下畫面就是成功畫面...傳送10行訊息給Echo Server,Server會再回傳。
      代碼: 選擇全部
      java EchoServer


      圖檔
    3. 以Telnet當作Client連線

      當然我們也可以用telnet當作Client連線到我們EchoServer:
      代碼: 選擇全部
      telnet 127.0.0.1 8008


      圖檔
    4. Counter Server 建置

      如果有看文章,就知道這部分要靠Http Server & Applet完成囉!

      首先,先把編譯好的 Counter.class 移動到 /wwwroot (注意,我已經在981130資料夾下)
      代碼: 選擇全部
      cp Counter.class /wwwroot


      圖檔

      接著回到windows,建立簡單的Html Applet,以notepad++編輯,另存為index.html:
      代碼: 選擇全部
      <html>
      <head>
      <title>Applet accessing Counter server...</title>
      </head>

      <body>
         <applet code="Counter.class" width="400" height="50" id="count">
      </applet>
      </body>
      </html>


      上傳到/wwwroot中:

      圖檔

      先將Counter Server啟動,並再新開一個SSH連線
      代碼: 選擇全部
      java CounterServer


      圖檔

      再度執行sdx httpd server;即可瀏覽囉
      代碼: 選擇全部
      sdx httpd -port 8080 -root [color=red]/wwwroot[/color]


      圖檔
  5. 由外頭 Windows 環境去 access B2D 裡的 Echo Servers

    1. 瀏覽B2D的Counter Server

      剛剛我們啟動的EchoServer & Counter Server別急著關掉:D

      試試看在win輸入虛擬機IP:8080 瀏覽,重新整理Count也會增加:

      圖檔
    2. 以telnet瀏覽B2D的EchoServer

      同樣,在WIN開啟CMD,利用telnet瀏覽B2D的EchoServer(如果剛剛不小心關掉了,請在SSH再啟動一次EchoServer)

      如果telnet還沒有開啟的(WIN7),請到控制台>程式集 > 解除安裝程式 > 開啟或關閉Windows功能 新增Telnet

      圖檔

      接著在cmd輸入 telnet 虛擬機IP 8008,連線到B2D Echo Server

      圖檔
  6. 透過 WireShark & Ethereal 去擷取往來資料封包

    作法很多種,我以B2D的 Ethereal 為範例,擷取Counter Server往來的的部分封包

    根據上述步驟啟動Counter Server後,在B2D當中啟動Ethereal (開始 > 程式 > 應用程式 > 網路 > Ethereal)

    圖檔


    如果全部封包的擷取,可能會很雜亂,運用這篇教學的Fiter[100] WireShark 封包擷取的過濾進行過濾。

    Count Server走的是port 8080;我可以用簡單的語句擷取只有8080的連線
    代碼: 選擇全部
    port 8080


    圖檔

    接著透過WIN的瀏覽器,連線到B2D的Counter Server,記得用sdx啟動,應該還沒關掉吧!?

    回到B2D點選STOP就可以看到監聽結果,瞧,這不就出現TCP三方交握、HTTP/1.1 等連線資訊!!!

    圖檔

    從上圖也可以發現,我們本機器IP是192.168.3.1(因環境而異),我也可以下filter:
    代碼: 選擇全部
    host 192.168.3.1

    抓取與本機的連線;其餘忽略。
最後由 ghost3401 於 週一 11月 07, 2011 9:08 pm 編輯,總共編輯了 44 次。
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週四 11月 03, 2011 11:20 pm

BTW. 請不要用私人訊息問我問題...謝謝T_T

6X同學一人一封搞死我~
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章hivicky92 » 週五 11月 04, 2011 12:02 am

!!助教我剛剛複製sdx.bat
他網址是http://equi4.com/pub/sk/sdx.bat
不適http://equi4.com/pub/sk/sdx.kit
hivicky92
懷疑的國中生
 
文章: 31
註冊時間: 週五 9月 30, 2011 12:12 am

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 12:03 am

hivicky92 寫:!!助教我剛剛複製sdx.bat
他網址是http://equi4.com/pub/sk/sdx.bat
不適http://equi4.com/pub/sk/sdx.kit


哎呀,我打錯了...我圖改了:"|
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章lance8537 » 週五 11月 04, 2011 12:28 am

哎呀呀~
vmnet掛掉了
圖檔
請問該怎麼辦 :?: :?: :?:
附加檔案
未命名.png
(91.49 KiB) 被下載 202 次
lance8537
懷疑的國中生
 
文章: 78
註冊時間: 週五 9月 10, 2010 11:04 pm

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 12:29 am

lance8537 寫:哎呀呀~
vmnet掛掉了
請問該怎麼辦 :?: :?: :?:


最快的方法應該是去控制台移除VMWare...重新安裝;

但是你這樣看起來只是VMNET CONFIG不能用,這步驟可以先跳過。
最後由 ghost3401 於 週五 11月 04, 2011 12:50 am 編輯,總共編輯了 1 次。
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章hivicky92 » 週五 11月 04, 2011 12:34 am

助教為什麼我輸入
gunzip tclkit-linux-x86-static.gz
chmod +x sdx.kit
chmod +x tclkit-linux-x86-static


index.html1.1跑出來只有sdx?
跟你圖中跑的不一樣
附加檔案
擷取.PNG
(97.71 KiB) 被下載 213 次
hivicky92
懷疑的國中生
 
文章: 31
註冊時間: 週五 9月 30, 2011 12:12 am

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 12:40 am

hivicky92 寫:助教為什麼我輸入
gunzip tclkit-linux-x86-static.gz
chmod +x sdx.kit
chmod +x tclkit-linux-x86-static


index.html1.1跑出來只有sdx?
跟你圖中跑的不一樣


聽不太懂你的問題

根據你的圖片,你好像下載好多次了

主要是要有sdx 及 tclkit
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章hivicky92 » 週五 11月 04, 2011 12:44 am

ghost3401 寫:
hivicky92 寫:助教為什麼我輸入
gunzip tclkit-linux-x86-static.gz
chmod +x sdx.kit
chmod +x tclkit-linux-x86-static


index.html1.1跑出來只有sdx?
跟你圖中跑的不一樣


聽不太懂你的問題

根據你的圖片,你好像下載好多次了

主要是要有sdx 及 tclkit




我綠色跑出的部分只有sdx!!!
附加檔案
擷取.PNG
(11 KiB) 被下載 198 次
最後由 hivicky92 於 週五 11月 04, 2011 2:18 am 編輯,總共編輯了 2 次。
hivicky92
懷疑的國中生
 
文章: 31
註冊時間: 週五 9月 30, 2011 12:12 am

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 12:49 am

請仔細看你自己附的圖片喔.....

綠色,也就是變成執行檔的已有sdx及tclkit

圖檔
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章hivicky92 » 週五 11月 04, 2011 12:50 am

!!!!!!!!!!!!!!!!!!!!!!!!!!!
喔喔喔我懂了!!!!!!!!!
hivicky92
懷疑的國中生
 
文章: 31
註冊時間: 週五 9月 30, 2011 12:12 am

Re:[100] B2D+TCL+SDX+Echo Server

文章hivicky92 » 週五 11月 04, 2011 1:00 am

為什會跑出這個呢?
要怎麼打下個執行碼

圖檔
附加檔案
擷取.PNG
(2.04 KiB) 被下載 188 次
hivicky92
懷疑的國中生
 
文章: 31
註冊時間: 週五 9月 30, 2011 12:12 am

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 1:01 am

hivicky92 寫:為什會跑出這個呢?
要怎麼打下個執行碼[/img]


請學一下怎麼在文章中顯示圖片...

表示你已經改過檔名了,結果你又改一次,sdx已經存在,它問你要不要覆寫。
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章XO » 週五 11月 04, 2011 1:38 am

對!要學會將夾檔附圖修在文章裡...
明天考試這項要求會是 Must。

附個圖老要人家去下載、打開... 太肉腳啦! ^o^

還有啊... 已經三令五申了...
下回再有人拿私人訊息問問題,根本不用理他們!
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5352
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 1:40 am

XO 寫:對!要學會將夾檔附圖修在文章裡...
明天考試這項要求會是 Must。

附個圖老要人家去下載、打開... 太肉腳啦! ^o^

還有啊... 已經三令五申了...
下回再有人拿私人訊息問問題,根本不用理他們!


老師...您有自己測試過Echo Server to B2D 編譯嗎?

我發現B2D JDK太舊了..

需要更新;有沒有更新的教學文嗎??

明兒個考試要讓他們慢慢更新?
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章XO » 週五 11月 04, 2011 1:43 am

ghost3401 寫:老師...您有自己測試過Echo Server to B2D 編譯嗎?

我發現B2D JDK太舊了..

需要更新;有沒有更新的教學文嗎??

明兒個考試要讓他們慢慢更新?


沒印象了...
嗯!待會兒我試試... JDK 1.4.2 應該可以吧!?
你有碰上啥問題嗎?
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5352
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 1:45 am

XO 寫:
ghost3401 寫:老師...您有自己測試過Echo Server to B2D 編譯嗎?

我發現B2D JDK太舊了..

需要更新;有沒有更新的教學文嗎??

明兒個考試要讓他們慢慢更新?


沒印象了...
嗯!待會兒我試試... JDK 1.4.2 應該可以吧!?
你有碰上啥問題嗎?


Echo Server無法編譯成功...所以無法執行~~~提示訊息是版本不對(太舊)

現在正嘗試更新中
------------------------------------------------------------------------------------------

發現我的盲點了......!! 我用全部編譯javac *.java..導致遇到錯誤就中斷,沒有全部檔案都編譯。

只有 BroadcastEchoServer.java & BroadcastClientHandler.java 不能編譯!!!
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章XO » 週五 11月 04, 2011 2:02 am

XO 寫:
ghost3401 寫:老師...您有自己測試過Echo Server to B2D 編譯嗎?

我發現B2D JDK太舊了..

需要更新;有沒有更新的教學文嗎??

明兒個考試要讓他們慢慢更新?


沒印象了...
嗯!待會兒我試試... JDK 1.4.2 應該可以吧!?
你有碰上啥問題嗎?


問題找到了... 那是因為 BroadcastEchoServer.java 裡用上了 JDK 1.5 以後才有的 Generic 機制。

其實只要把 程式中 那兩郭 <BroadcastClientHandler> 刪掉即可。
換言之...

代碼: 選擇全部
public class BroadcastEchoServer1 {
  static protected Set<BroadcastClientHandler> activeClients =
   new HashSet<BroadcastClientHandler>();


改成如下即可:

代碼: 選擇全部
public class BroadcastEchoServer1 {
  static protected Set activeClients = new HashSet();


新的 Generic 機制讓你限定 Set 裡頭可以擺進去元素的 Type, 在這裡限定 activeClients 這個集合 (Setㄇㄟ)
裡的元素是屬於 BroadcastClientHandler 這種類別的物件。
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5352
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re:[100] B2D+TCL+SDX+Echo Server

文章ghost3401 » 週五 11月 04, 2011 2:03 am

哎呀,老師辛苦了!!!! 2.03了!
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:[100] B2D+TCL+SDX+Echo Server

文章XO » 週五 11月 04, 2011 2:10 am

ghost3401 寫:Echo Server無法編譯成功...所以無法執行~~~提示訊息是版本不對(太舊)


非也!無法編譯下,該資料夾的 .class bytecodes 都是在 Windows 底下用 JDK 1.6 編譯出來、上傳過來的。
B2D Server 裡 JDK 1.4.2 無法執行的原因正好相反,是 Bytecode 版本太新,裏頭有東東舊版 Java Runtime
1.4.2 不認得啦!

反過來,在 B2D Server 上 JDK 1.4.2 編譯出來的 Bytecodes 拿到 Windows 1.6 版 Java Runtime 跑是不會
有問題的。
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5352
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

下一頁

回到 資料通訊與網路

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客