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

Delphi 技術講座之二 - Indy網路通訊之應用實作

 
LH
一般會員


發表:12
回覆:34
積分:14
註冊:2010-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-02-15 13:15:52 IP:220.136.xxx.xxx 訂閱
Delphi 技術講座之二
Indy網路通訊之應用實作

主講人: 張子仁, 現任易繁科技技術總監、元智大學資訊傳播學系兼任講師,著有Delphi/Kylix Indy網際網路程式設計等書。
Indy,取Internet Directly之意, 到了Delphi 2005 後,Indy成為Delphi預附的網路元件,Indy整套網路元件包羅萬象,從Client端到Server端,甚至是加密元件無所不包。其所涵蓋的網路通訊協定更是廣泛,從ICMP(Ping)、文字模式傳輸的Telnet、傳輸檔案最常用的FTP、目前全球使用者最多的HTTP,甚至連HTTP-SSL或FTP-SSL都可以支援。當然,如果程式設計人員想要自行設計通訊協定,提供與現存的通訊協定相似,但效能更好、功能更多的協定,也可以透過TIdTCP與TIdUDP系列的元件來設計。
在Indy的協助下,開發TCP/IP網路通訊程式變得非常容易,甚至比了解資料庫應用程式還更簡單,
在本次技術講座當中,我們將以實例說明,讓您由淺入深,一步步了解如何以Indy製作簡單的即時通訊軟體。此技術在2001年曾經使用在教育部開發的『校安即時通』當中。
Delphi可以開發的應用程式功能層面是非常廣的,全世界最有名的語音即時通訊軟體-Skype就是用Delphi開發出來的,從文字、語音到影像通訊,Skype的效能跟穿透性都遠遠超越曾經存在過的即時通訊軟體。因此如果您對於通訊協定有深入的了解,透過本講座的介紹,您一定可以很快的開發出自己屬意的應用程式。
我們將以實例說明的方式讓您了解相關技巧,也歡迎您攜帶筆記型電腦並安裝好 Delphi XE 版本(若您尚未購買可先行安裝試用版), 我們會預留時間讓講師做現場指導及交換寶貴經驗。
Delphi技術講座內容:
如何以Indy的TCP Server與Client製作通訊軟體通訊。
(一) 制定簡單的資料通訊定義 (文字協定)
(二) 以TIdTCPClient與Server進行資料交換
(三) 以TIdTCPCmdServer快速建置文字模式的即時通訊軟體伺服器
- 以TStringList儲存每個連線
- 如何透過TStringList把每個連線與使用者做關連
- 如何進行資訊廣播或者傳資訊給特定人
(四) 同時以兩個Delphi IDE 對Client與Server進行偵錯
日期:100年 3月15日 星期二

時間: 2:00pm~5:00pm

地點:資策會數位教育研究所 資訊技術訓練中心 204 會議室
台北市復興南路一段 390 號 2 樓 (捷運大安站斜對面,台灣企銀樓上)

完全免費, 敬邀您來參加. 報名網址:
http://qcomgroup.com.tw/embarcadero/seminar20110315.php
或撥打洽詢專線 (02) 2365-0238


主辦單位:捷康科技
協辦單位: 資策會數位教育研究所 資訊技術訓練中心
編輯記錄
LH 重新編輯於 2011-02-14 22:17:39, 註解 無‧
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-02-18 21:48:04 IP:122.146.xxx.xxx 訂閱
 請問現場有已安裝Delphi XE的電腦可以使用嗎?

編輯記錄
frappe 重新編輯於 2011-02-18 06:50:10, 註解 無‧
P.D.
版主


發表:571
回覆:3888
積分:3677
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-02-21 11:59:40 IP:118.169.xxx.xxx 未訂閱
我想[應該不會有吧! 畢竟這只是講座, 不是資策會的課程!
LH
一般會員


發表:12
回覆:34
積分:14
註冊:2010-12-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-02-21 13:42:40 IP:220.136.xxx.xxx 訂閱
可以自行帶筆記型電腦並安裝好 Delphi XE 來上課. 以備不時之需.
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-02-22 09:39:17 IP:220.128.xxx.xxx 未訂閱
我要報名囉,各位趕快哦。
請問,FTP 的收送 Port 預設只有一個,用 Indy 寫的 FTP 執行時,為什麼不會跟其他同時執行的 FTP 程式互搶執行權?
G01
高階會員


發表:249
回覆:379
積分:215
註冊:2002-05-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-02-22 11:54:30 IP:118.231.xxx.xxx 未訂閱
 網路上有很多撰寫Winsocket相關的資訊喔,記得上課前先充實一下這類的相關資訊;免得聽不懂一些相關術語

先Po一篇給大家參考

Active FTP 及 Passive FTP

在大部份的防火牆設定中,使用 FTP 傳輸檔案時經常會遇到需要設定使用 passive mode 的 FTP.但大部份的 FTP client 軟體,default 大都是 active mode FTP,這二種 FTP 模式在傳輸上有何不同?先了解 FTP 的工作方式,有助於了解 active FTP 及 passive FTP 的不同.

一般的 FTP 使用 TCP port 20 及 21 二個 port. 正常來說, port 20 是傳輸資料用,而 port 21 傳輸命令.但事實上並不是一直使用 port 20 來傳輸資料.

Active mode FTP (主動模式 FTP)
在 Active 模式的 FTP client 一開始時會先使用一個大於 1024(N) 的 TCP port 連結至 FTP server 的port 21. 然後 FTP client 會打開該 port 的下一個數字的 port (N 1) 並送至 FTPserver 說期望下次的溝通可以經由新的 port (N 1),這樣比較不會占用到 FTP server 的 port 21 而影響別的 FTP sessions.同時 FTP server 會使用 port 20 連結至 FTP client 新送過來的 port 號來傳資料.
所以在防火牆上需要打開:

FTP server port 21 from anywhere # 給 FTP client 開始連接
FTP server port 21 to port > 1024 # 給 FTP server 回應 client 命令
FTP server port 20 to port > 1024 # 給 FTP server 開始資料傳輸
FTP server port 20 from port > 1024 # 給 FTP cleint 傳送 data ACK 給 server

所以連接順序為:
1. FTP client use TCP port 1026 for command to FTP server command port 21
2. FTP server use TCP port 21 responed to FTP client command port 1026
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 1)
4. FTP client use TCP port 1027 ( 1026 1) for data ACK to FTP server port 20

問題在於使用 active mode FTP 時主控權在 FTP client, FTP client 並不是真正的連至 FTP server 的data port (TCP port 20),它只是告訴 FTP server 它準備在那個 port 接收資料及port 1 傳送 ACK.並期望 FTP server 可以主動連接至 FTP client 所期望的 port.這在使用防火牆的環境中就會造成問題.


Passive mode FTP (被動模式 FTP)
解決主動模式在防火牆外面時所發生無法連接的問題,可以用被動模式 FTP. 在Passive mode FTP 下,FTP client一開始和 active mode FTP 一樣,打開二個 port (N > 1024 及 N 1), 使用第一個port 連接至 FTP server的 port 21,並送出命令 PORT 讓 server 連至 N port 再送出 PASV 命令給 server,這樣會造成 server使用 一個大於 1024 的 port 連接至 client 並送出命令 PORT N ( N >1024 ) 給client. 樣 client 就會使用 N 1 並開始傳輸資料.

這樣子在防火牆上需要設定

FTP server TCP port 21 from anywhere # FTP client 開始連接至 FTP server
FTP server TCP port 21 to port > 1024 # FTP server 回應 client 控制
FTP server TCP port > 1024 from anywhere # FTP client 資料傳輸
FTP server TCP port > 1024 to client port > 1024 # FTP server 回應資料 ACK至 client data port

連接順序為:
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
3. FTP client use TCP port 1027 (N 1) to FTP server 2024 for data transmit and ACK
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK


因為 passive mode FTP 是由 FTP server 發起一個大於 1024 的 port 至 client,在防火牆上的設定就相對簡單,而可以傳輸資料而不會被防火牆 block.


參考資料 RFC959

註:在 Windows 下原來的 ftp client 並沒有 passive 這個指令,但可以利用 literal 指今來下給 FTP server FTP session 為 passive mode

方法如下:

C:\>ftp 10.10.100.121
Connected to 10.10.100.121.
220 (vsFTPd 2.0.1)
User (10.10.100.121:(none)): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> literal pasv
227 Entering Passive Mode (10,10,100,121,242,172)
ftp>

可以看到進入 passive mode 了.使用的 port 號碼是 (242*256) 172= 62124

若是 UNIX 但 FTP client 不支援 passive mode 指令可以用 quote pasv

cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-02-23 10:53:53 IP:211.75.xxx.xxx 未訂閱
謝謝 QH1 大大的精解,我手頭上的專案,要用到某家公司提供的一支 ftp 執行檔來傳輸資料,把資料存成文字檔,呼叫那支程式,告訴它檔名,它就把資料傳出去,並自動關閉。
曾經試過這支程式無法輸送,主機有設定只開放特定的 Port,我懷疑它使用 20 和 21 以外的 port,而是主機沒有開放使用的,問題在於,誰知道這支程式用甚麼 Port ? 問該公司的客服都說只有使用 30 和 21,問題就一直無法解決。
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-02-23 14:45:04 IP:122.146.xxx.xxx 訂閱
 因為我平常都在寫資料庫程式, 沒接觸過indy,

最近工作需要寫一個程式,
從一台電腦發送訊息到指定的電腦, 有點類似簡易版MSN,

請問課程內容有包含這部分嗎?
LH
一般會員


發表:12
回覆:34
積分:14
註冊:2010-12-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-02-23 15:17:55 IP:114.36.xxx.xxx 訂閱
有包含此部份相關的技術內容說明 歡迎來參加. 


cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-02-24 09:44:56 IP:211.75.xxx.xxx 未訂閱
報名兩天了,還沒收到確認函。
LH
一般會員


發表:12
回覆:34
積分:14
註冊:2010-12-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2011-02-24 11:50:02 IP:114.42.xxx.xxx 訂閱
今天早上已經發出報名確認函, 我們在講座的前一天會再發出活動確認函

謝謝

cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2011-03-04 09:50:26 IP:211.75.xxx.xxx 未訂閱
各位趕快報名囉!我手頭上的專案是資料庫程式,跟 Indy 好像無關,但客戶要求報表跑出來後,直接產生 pdf 檔,再跳出 e-mail 傳送畫面,並自動填入附加檔、收件人名稱和簡單的文字內容,可新增和移除收件人,按一下 "傳送" 就送出去了,所以 Indy 的 email 還是很常用,不要錯過。
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2011-03-05 00:32:53 IP:220.133.xxx.xxx 訂閱
我目前工作接觸Indy也只有Mail元件, 我用來寫Auto Mail把報表每小時自動寄出,
我覺得Indy寄Mail的優勢應該是可以連圖片一起寄出去顯示在畫面上吧~


===================引 用 cancer 文 章===================
各位趕快報名囉!我手頭上的專案是資料庫程式,跟 Indy 好像無關,但客戶要求報表跑出來後,直接產生 pdf 檔,再跳出 e-mail 傳送畫面,並自動填入附加檔、收件人名稱和簡單的文字內容,可新增和移除收件人,按一下 "傳送" 就送出去了,所以 Indy 的 email 還是很常用,不要錯過。
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#14 引用回覆 回覆 發表時間:2011-03-09 12:22:26 IP:211.75.xxx.xxx 未訂閱
您好,請問一下,我都是把圖片夾成附件,您是怎麼把圖片貼在內容裡面的?我知道郵件格式要用 html,要怎麼給 <img> ?
===================引 用 frappe 文 章===================
我目前工作接觸Indy也只有Mail元件, 我用來寫Auto Mail把報表每小時自動寄出,
我覺得Indy寄Mail的優勢應該是可以連圖片一起寄出去顯示在畫面上吧~?
LH
一般會員


發表:12
回覆:34
積分:14
註冊:2010-12-18

發送簡訊給我
#15 引用回覆 回覆 發表時間:2011-03-17 18:23:14 IP:114.42.xxx.xxx 訂閱
各位好

研討會當天的投影片及範例程式 已經上傳至

http://www.qcomgroup.com.tw/embarcadero/press_and_event.htm


謝謝

系統時間:2017-12-15 16:25:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!