小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Tclientsock怎么telnet服務器??

 ShangShujie 2007-04-16

基于TELNET協(xié)議的DELPHI程序與LINUX主機通信的實現(xiàn)
 1.Telnet協(xié)議簡介
     Telnet協(xié)議的目的是提供一種通用的、八比特位定向通信手段,其基本功能是通過網(wǎng)絡提供遠程登錄或虛擬終端能力。Telnet協(xié)議可以用來進行終端-終端的通信(連接)或進程-進程的通信(分布計算)。
     Telnet連接實際上是一種TCP/IP連接,它通過在TCP傳輸數(shù)據(jù)流中嵌入Telnet控制信息來實現(xiàn)連接,Telnet通過TCP端口23提供服務。它的建立與實現(xiàn)基于三種思想:“網(wǎng)絡虛擬終端”的概念;子協(xié)商操作原理;對稱終端和過程。
2.環(huán)境配置
     Delphi提供了一種全新的Windows應用程序開發(fā)方法,它速度快,具有強大且容易使用的可視化開發(fā)環(huán)境,具有領先的數(shù)據(jù)庫技術和強大的網(wǎng)絡編程能力。
     使用Delphi開發(fā)工具(Object Pascal語言),利用Telnet協(xié)議實現(xiàn)與Linux主機的通信,首先要建立環(huán)境,即Linux與Windows 95聯(lián)網(wǎng)。這里,Windows 95環(huán)境下的Delphi應用程序將作為客戶端,而Linux操作系統(tǒng)將作為服務器,它們之間的關系如下圖。
(1)安裝Linux
     按操作指南安裝Linux操作系統(tǒng)。Linux是Unix操作系統(tǒng)的一個變種,它采用了微內核技術。
(2)配置網(wǎng)絡
     1)啟動Linux,并鍵入“root”以管理員身份登錄。運行netconfig,根據(jù)屏幕提示配置網(wǎng)絡的服務器名、域名、主機的IP地址、子網(wǎng)屏蔽及命名服務器IP地址。
     2)修改rc.modules文件
     此文件是Linux系統(tǒng)的資源配置模塊文件,由于Linux并沒有自動配置網(wǎng)絡的功能,所以必須進行手工配置。
     進入etc\rc.d目錄,用vi命令編輯rc.modules文件。在Network族中,將適用自己的網(wǎng)卡處(如ne IO=0xnn)前面的屏蔽位“#”去掉,然后修改IO端口(如IO=0x240)。鍵入qw命令保存修改,退出文件。此修改后的文件將被加入到Linux系統(tǒng)文件中,并在Linux啟動時自動生效。重新啟動Linux,將會看到以下的網(wǎng)絡配置提示信息:
     Network NE2000 IO=0x240,11
3)測試服務
     為已物理連接的具有Windows 95操作系統(tǒng)的客戶機添加TCP/IP協(xié)議,并配置好IP地址及標識。重新啟動以使配置生效,在Linux操作系統(tǒng)下鍵入“ping+IP地址”來測試網(wǎng)絡的連接,將會看到請求連接建立的時間等信息,與此同時,95已經(jīng)通過TCP/IP協(xié)議連接成功,如要測試Telnet服務,只須在Linux服務器上執(zhí)行Telnet命令即可。
3.網(wǎng)絡編程(Delphi應用程序與Linux主機通信)
     目前,軟件領域流行的網(wǎng)絡編程的資料及代碼范例,基本上都是基于C語言開發(fā)的。C語言是一種半高級語言,對于指針、內存操作有極大的靈活性,而Pascal是一種高級語言,其內部具有許多保護機制,避免了許多影響操作系統(tǒng)正常運行的誤操作。
     由C向Object Pascal(Delphi編程語言)的代碼轉化并不是非常困難的事情,困難在于C語言結構與Object Pascal不同,類型、變量的表示也相差很大,這就需要熟悉C語言結構與Object Pascal的聯(lián)系與區(qū)別,特別是必要的數(shù)據(jù)結構的表示方法。
     下表列出作者在實現(xiàn)Telnet協(xié)議時,通過實際摸索得出的C語言與Object Pascal在數(shù)據(jù)結構與語法表示方面在網(wǎng)絡編程中的差異:
     Delphi網(wǎng)絡編程支持Winsock,其中的許多函數(shù)均可以直接調用,但要注意函數(shù)調用過程中Pascal語言的參數(shù)傳遞風格,尤其要小心指針參數(shù)的正確使用(如表中所列)。
(1)建立連接
     由于Object Pascal支持Winsock,在程序定義階段的uses部分加入Winsock的說明,這樣就可以使用Winsock中的函數(shù)。
     直接啟動WSAStartup()。將套接字s設為Tsocket類型,調用socket()創(chuàng)建套接字。初始化socket地址(Psockaddr類型),設置Linux服務器的IP地址。
     調用connect函數(shù)建立連接,其主機結構參數(shù)由初始化的Psockaddr結構決定。此中要注意網(wǎng)絡字節(jié)順序及數(shù)目,如運用不當,很可能無法建立連接。
(2)協(xié)商通信
     一旦連接成功,主機將發(fā)回請求信息,從而進入Telnet協(xié)議的子協(xié)商過程。子協(xié)商過程,是客戶與服務器之間以協(xié)議約定好的命令結構形式的數(shù)據(jù)流進行相互通信的過程。這種子協(xié)商過程的命令結構如圖所示:
     這些命令符都是八比特的ASCII字符,命令之間沒有任何間隔符,這些ASCII字符可以用ord()和chr()函數(shù)來進行字符與數(shù)字之間的轉換。
     建立接收緩沖區(qū),調用recv()或recvfrom()函數(shù)等待服務器發(fā)送的信息。通常,服務器將發(fā)送如下子協(xié)商命令:
IAC DO TERMINAL-TYPE (終端類型)
IAC DO TERAMINAL-SPEED(終端速率)
IAC DO X-DISPLAY-LOCATION(顯示方式)
IAC DO ENVIRONMENT(環(huán)境)
     建立發(fā)送緩沖區(qū),根據(jù)上述信息進行回應,調用char()函數(shù),將命令代碼轉換為ASCII字符填入發(fā)送緩沖區(qū),注意在“選項”中出現(xiàn)的非命令字符的字符串(如表示終端類型的字符串)要以NVT ASCII String形式出現(xiàn)。調用send()或sendto()函數(shù)發(fā)送至服務器,并等待服務器的回應信息,此后按照Telnet協(xié)議進一步進行子協(xié)商。例如,可以這樣進行回應:
IAC DO TERMINAL-TYPE(協(xié)商終端類型)
IAC DONT TERMINAL-SPEED(不協(xié)商終端速率)
IAC DONT X-DISPLAY-LOCATION(不協(xié)商顯示方式)
IAC DONT ENVIRONMENT(不協(xié)商環(huán)境)
     一旦子協(xié)商命令執(zhí)行完畢,服務器將發(fā)送服務器本身的版本信息和登錄信息,如上述Linux與95連網(wǎng)系統(tǒng)將會得到:
     IAC WILL ECHO 換行 回車 Linux 2.00(Server.user)(ttypo)換行回車server login
此時將提示用戶輸入賬號,進行遠程登錄,如登錄失敗(如服務器沒有要登錄的帳戶),則服務器返回空信息,并繼續(xù)等待用戶進行登錄,直到60秒后,服務器將發(fā)送:
Login times out after 60 seconds 換行 回車
     并斷開與客戶已建立的虛電路連接,此時用戶的發(fā)送與接收命令都將產(chǎn)生錯誤,這種錯誤可以通過調用WSAGetLastError()函數(shù)得到錯誤代碼。
     登錄成功后,服務器將返回服務器版本信息,最近一次登錄信息及用戶有關信息等。此時,客戶(Windows 95)與服務器(Linux)就可以使用服務器的Telnet服務進行數(shù)據(jù)傳輸,客戶已經(jīng)成為服務器的一個遠程虛擬終端,客戶機通過數(shù)據(jù)傳輸方式將等待執(zhí)行的指令發(fā)送到服務器一端。服務器得到數(shù)據(jù),將分離出的命令指令在后臺執(zhí)行,并將執(zhí)行結果以數(shù)據(jù)形式返回給客戶機,如發(fā)送“ls”命令,將列出當前服務器的目錄信息。
     本文所討論的基于Telnet協(xié)議的Delphi與Linux主機通信的這一軟件,在實際的LAN中運行良好。開發(fā)這一軟件的目的是探討在Delphi下運用Object Pascal語言進行網(wǎng)絡編程的基本方法,以及Telnet協(xié)議的實現(xiàn)流程。本文的著眼點在于為網(wǎng)絡編程人員提供利用Object Pascal語言進行網(wǎng)絡編程的一點經(jīng)驗,尤其是由C代碼向Object Pascal轉化中的一些注意事項,以免進入誤區(qū)。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多