當前位置:編程學習大全網 - 源碼下載 - DELPHI超級Internet控件集--INDY

DELPHI超級Internet控件集--INDY

妳有沒有用DELPHI開發Internet程序?是不是常常會煩惱FastNet組件為什麽沒有源代碼?有很多問題 不看源代碼 真不知道是什麽問題 是不是也覺得FastNet組件支持的網絡協議還不夠多?現在不用煩惱了 有壹套功能很豐富 使用很方便 開放源代碼的免費INTERNET控件集可以解決妳的煩惱 這套控件集就是INDY了

 什麽是INDY?它有什麽功能?怎麽用?就讓我慢慢道來

 INDY的全名是Internet Direct(也叫Winshoes) 它是壹套開放源代碼的Internet控件集 它支持大部分流行的Internet協議 包括TCP UDP DNS ICMP FINGER FTP GOPHER HTTP POP SMTP TELNET WHOIS等 支持BASE MD MD MD 等編解碼 提供INTERNET流行協議的客戶端和服務器控件 INDY控件集的客戶端和服務器控件都有完整 詳細的源代碼例程和幫助文件 用戶可以根據這些例子 簡單方便快速的建造各種服務器程序 例如WEB服務器 TELNET服務器 IRC服務器 TCP UDP服務器等 而這些服務器都是支持多線程的 用戶也可以很簡單的編寫出各種客戶端程序 例如EMAIL FINGER FTP PING TELNET等 著名的OICQ使用的協議是UDP 有了INDY妳可以使用UDP服務器和UDP客戶端寫出壹個和OICQ較勁的東東來

 INDY是完全基於SOCKET阻塞工作模式(後面討論)的開發庫 現在已經支持BORLAND DELPHI C++ BUIDER和最新的Kylix(LINUX裏的DELPHI)等開發平臺 目前 INDY的最新正式發行版本是 版 最新BETA版本是 版 INDY 支持DELPHI DELPHI C++BUIDER C++BUIDER Kylix等版本 Kylix已經把INDY作為標準組件打包到發行包裏了 而且據說DELPHI 將會把INDY作為它的INTERNET基本組件 由此可見INDY的強悍實力

 看了怎麽多吸引人的特性 是不是迫不及待的想得到它了?不用急 妳可以隨時到INDY的主頁上下載壹份免費的源代碼來安裝 INDY的網址是(// nevrona /Indy/) 主頁上會公布最新的INDY消息 發表更新的源代碼和相關文檔 如果在開發過程中遇到什麽問題 可以通過訪問BORLAND公司的新聞組(news://newsgroups borland )裏面的borland public delphi internet winsock和borland public cppbuilder internet兩個主題來獲得免費的技術支持 INDY小組會及時回答在新聞組裏提出的關於INDY的問題 妳也可以把使用INDY的心得技巧 發現的BUG 發表到新聞組裏 為INDY的發展作出壹份貢獻

 INDY的安裝很簡單 現在INDY的網站正式提供WINDOWS版本的安裝程序供下載 支持Kylix的版本則包含在BORLAND公司的Kylix發行包裏 不過由於BORLAND修改了壹些文件的原因 導致INDY的例程都不能編譯成功 所以INDY網站提供了針對Kylix修改的例程文件下載 下載了安裝程序後 執行安裝程序(請先把妳的開發平臺程序關掉) 設置好安裝路徑 選擇好妳的開發平臺的種類(DELPHI或C++BUIDER)和版本 就可以了 等安裝完成 打開妳的開發平臺程序 就可以在控件欄裏發現新加的三個欄目 INDY SERVERS INDY CLIENTS INDY MISC 分別是INDY的服務器類 客戶端類 雜項控件 而安裝了INDY的目錄裏 包含有INDY的控件文件和控件源代碼以及例程 妳還可以在網站上下載它的幫助文件 幫助文件裏包括各個控件的詳細說明 是應用好INDY的必備手冊

 安裝好INDY後 可以開始嘗試INDY的新鮮好味道了 INDY提供的豐富例程就是絕好的教材 先編譯幾個例程 看看INDY的強大功能吧 要想熟練的使用好INDY 就得多多學習這些例程和參考幫助文件

 熟悉WINSOCK編程的讀者壹定會覺得奇怪吧 為什麽INDY是是完全基於SOCKET阻塞工作模式的呢?異步模式(非阻塞模式)是WINSOCK的壹大特點 為什麽不用呢?

 其實 之所以大多數WINDOWS下的INTERNET程序都使用異步模式 這和WINSOCK的歷史有關 當WINSOCK被移植到WINDOWS的時候 當時的WINDOWS操作系統還是WINDOWS 而WINDOWS 是不支持多線程的 不象UNIX下可以使用FORK來運行多進程 在WINDOWS 下 如果使用阻塞模式 在通訊時會鎖定用戶界面使程序沒有響應 為了避免這種情況 WINSOCK就引入異步模式這個新特性 而使用異步模式來編制INTERNET程序也就成了WINDOWS程序員的經典教條 但是 隨著新的WINDOWS操作系統的出現 如WINDOWS NT ME 等 這些操作系統開始支持多線程 異步模式這個教條仍然深入人心 使很多程序員會下意識的拒絕使用阻塞模式

 事實上 UNIX下的SOCKET只支持阻塞模式(現在UNXI的SOCKET有了壹些新的非阻塞特性 不過絕大多數應用仍然使用阻塞模式) 阻塞模式具有以下幾個比異步模式優越的特點

 編程更簡單 可以把所有處理SOCKET的代碼放在壹起 順序執行 而不用分散在不同的事件處理代碼段裏

 更容易移植到UNIX 使用INDY的DELPHI程序 可以不做太多(甚至不做)修改 就可以把WINDOWS的DELPHI源代碼拿到LINUX下 用Kylix來編譯成LINUX下的網絡程序

 更容易在多線程程序裏使用 由於阻塞模式的代碼可以放在壹起 可以很方便的把這些代碼包裹在線程裏面來使用 而不象異步模式 需要針對不同的事件 設置不同的處理代碼

 為了兼顧簡單可靠和高效 INDY是基於阻塞模式工作的 阻塞模式需要等待任務完成才返回 這樣 當主線程裏調用阻塞任務運行時 程序不能處理用戶界面的消息 INDY提供了壹個控件TidAntiFreeze來解決這個問題 只要在妳的程序裏 簡單的填加壹個TidAntiFreeze控件到任何地方(隨便往FORM上放) 不需要寫任何代碼(最多把超時時間改壹下) 就可以很好的解決用戶界面不響應的問題

 下面有兩段示範代碼 可以看出INDY控件的程序代碼和其他使用異步模式的Internet控件的程序代碼相比 是多麽的簡潔

代碼壹 INDY控件的程序代碼(IndyClient代表INDY控件的壹般形式)

with IndyClient do begin

Connect;

Try

// 在這裏寫入妳的處理代碼

finally

Disconnect;

end;

end;

代碼二 其他控件的程序代碼(SocketComponent代表壹般的Internet控件)

procedure TFormMain TestOnClick(Sender: TComponent);

begin

with SocketComponent do begin

Connect; try

while not Connected do begin

if IsError then begin

Abort;

end;

Application ProcessMessages;

OutData := Data To send ;

while length(OutData) > do begin

Application ProcessMessages;

end;

finally Disconnect; end;

end;

end;

procedure TFormMain OnConnectError;

begin

IsError := True;

end;

procedure TFormMain OnRead;

var

i: Integer;

begin

i := SocketComponent Send(OutData);

OutData := Copy(OutData i + MaxInt);

end;

lishixinzhi/Article/program/Delphi/201311/25074

  • 上一篇:倚天劍與屠龍刀
  • 下一篇:壹臺計算機中機器的數量有三種表示法。
  • copyright 2024編程學習大全網