全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:7210
推到 Plurk!
推到 Facebook!

解題範例-封包 Encode & Decode (含Source for D6, D7)

 
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-20 02:19:16 IP:203.79.xxx.xxx 訂閱
相關提問:

http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=90516

程式改版說明:

(1)將原程式分為TEST_TRANS.EXE 與 TEST_RCVR.EXE

(2)封包格式定義移到fDefine

(3)TEST_TRANS.EXE除了原來Encode及Decode的動作之外,
另外將封包送到 OutUDP(TNMUDP), 提供TEST_RCVR.EXE解碼.

OutUDP.RemoteHost := '127.0.0.1';
OutUDP.RemotePort := 12345;

(4)TEST_RCVR.EXE使用InUDP(TNMUDP), 自Local LAN接收
TEST_TRANS.EXE傳送的封包,並解碼顯示

(5)TEST_TRANS.EXE在Encode封包時計算其CRC值. 在Decode
時,接收端在收齊封包時計算比對.(CRC以簡單之xor運算)

CalcCRC();
CheckCRC;

(6)這個範例實際的情況可能是TEST_TRANS.EXE接收資料來源,
Encode 成自定封包格式, 透過UDP 或 TCP傳送到Client端,具備
簡單即時資訊主機功能.


版本更新說明:(2007-09-21)
(1)TEST_TRANS.EXE 新增 TCP傳輸(使用TServerSocket)
(2)新增TEST_RCVR2.EXE, 從TCP接收封包並解碼顯示
**** 執行TEST_RCVR2.EXE前, 請先將Server TEST_TRANS.EXE
**** 啟動.


NOTE:

2007-11-07 新增D7版本, 將TNMUDP 換成 Indy UDP 元件, 測試 OK.

編輯記錄
jow 重新編輯於 2007-09-20 23:35:17, 註解 程式改版.‧
jow 重新編輯於 2007-09-21 12:46:11, 註解 新增TCP傳輸模式‧
jow 重新編輯於 2007-11-07 10:22:04, 註解 新增For D7的版本, 使用Indy UDP 元件‧
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-21 13:12:45 IP:210.66.xxx.xxx 訂閱
補充說明:
(1)TEST_RCVR.EXE 收的UDP,所以在同一台電腦,同一個Port,
只能收一份封包.

(2)TEST_RCVR2.EXE走的是TCP,所以可以執行多個Instance.
同時接收封包.

***使用TEST_RCVR2.EXE, 要確定TEST_TRANS已經啟動.
windham
一般會員


發表:15
回覆:22
積分:7
註冊:2006-07-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-21 18:23:02 IP:219.77.xxx.xxx 訂閱
先感謝一下^^
如果解決不到我的問題 也希望能有所得著^^
系統時間:2024-11-21 19:36:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!