2009-09-28 43 views
1

我正在VB.net中寫一個基於GUI的應用程序,通過telnet與LambdaMOO服務器通信,發送命令以顯示對象層次結構,然後解析輸出並創建一個可視表示的對象層次結構。Socket編程和Telnet與VB.net

所以我的問題是:是否有某種類型的「telnet客戶端」的.NET來簡化數據的發送和接收,還是我必須使用套接字API編寫我自己的?

莫諾有這樣的事情嗎?

除了一個簡單的解決方案,沒有人有一個很好的教程,他們可以指向在VB.net中的telnet客戶端編程?

回答

1

telnet protocol基本上就是通常的TCP協議,有很多可選的東西,你可能不需要實現。所以你會打開一個套接字並開始使用套接字流接口發送和接收數據。

嘗試使用常規套接字API,您可能會發現它非常簡單。

+0

也快速搜索我看到的一切都是付費解決方案,所以我同意。 up –

+0

我開始按照你的建議做,但發現API的行爲有點怪異。我希望有人用更高級別的「telnet客戶端」類編碼出所有的奇怪,所以我不必學習套接字的怪癖或telnet的怪癖。 我基本上希望能夠用VB編寫telnet會話,並解析返回的數據。 – Mike

+0

也許你可以描述你遇到的「怪異」,並且有人能夠指引你朝着正確的方向前進。 Telnet是比較簡單的網絡協議之一,所以遇到的任何問題都可能會在其他地方顯示出來。花時間瞭解套接字API的普通級別如何工作是值得的。 –

0

只是一個建議。您可以嘗試對您的vb應用程序進行編程以在批處理模式下執行現有的telnet應用程序。

這裏是link供您參考。請參閱7.3在批處理文件和腳本中使用Plink。希望能幫助到你。

0

你可以抓取任意數量的庫中的一個來使用。這裏有一個庫:

LINK

對於其他人嘗試使用Google的線沿線的東西:庫的telnet泥.NET

最後,還有什麼隨時打開數量開源MUD/MOO/MUSH項目誰願意分享想法,並尋找人來幫助項目。

0

我有我的試驗與telnet。你必須聯合使用諸如wireshark之​​類的工具來找出需要啓動的命令。我確實發現與我的Unix系統交流相當具有挑戰性。一方面你必須知道你的telnet指令。您可能會發現很難確定應用程序的狀態 - 無論是已登錄還是未天生。你必須爲它制定自己的邏輯。

您需要做的另一件事是將telnet返回的字節解析爲命令或指令數據,即您必須知道所收到的字節是指令還是其他正嘗試向您發送的內容。 Here是一個會派上用場的參考。

首先,我建議你開始使用wireshark工具,並通過手動以及通過應用程序來回發送通信。

+0

不錯的參考。謝謝。 – Mike

0

您可以看看Expect command這是一個在遠程機器上運行telnet,f​​tp等腳本化解決方案。然後,您可以腳本預期連接和檢索數據。

這會消除管理套接字和協議的所有複雜性。

1

好吧,我有一個類似的問題,並忽略了所有的安全問題等,希望TELNET從VB發起的連接到遠程設備,並做些什麼。我同意整個談判過程是一件可怕的事情,但一旦你完成了,實現起來其實很簡單。我決定不要停下來,因爲我一直在閱讀一些事情,說如果你可以在網絡流中寫入1和0,就可以完成清楚的工作。

下面鏈接中的代碼將啓動連接,並讓您完成通過TELNET實際交換明文信息。假設發送用戶名和密碼組合的示例顯示瞭如何讀取和寫入連接。大提示 - 最初有一個漂亮的大文本框或什麼來捕獲進入緩衝區的所有內容(變量returndata)。這將幫助您診斷問題。另外檢查我的博客那裏如何做到這一點,沒有文本框閃爍閃爍的事情。一旦你完成了所有這一切,你知道你的腳本是可靠的,摒棄任何屏幕更新,它會通過而不是花時間。

道歉的真髒代碼和糟糕的網站佈局。

http://myhead-online.blogspot.com/2009/05/vb-net2008-express-telnet-to-sun.html

0

從事物的LambdaMOO結束,如果你有嚮導訪問或者是朋友,誰做,你可以有MOO讓您對其他協議,您也許能有更多的工作數據很容易,比如HTTP。你所需要的只是MOO上的一個對象,其中do_login_command()被設置爲處理請求,然後使用listen()內建函數讓該對象在給定端口上偵聽。只要協議不需要任何複雜的SSL,在MOO端進行編碼就相當容易。所以這可能是值得的,如果VB.net更容易處理HTTP等