我目前使用第三方組件來處理在.NET telnet連接。我希望它是同步的,我發送一個命令到接收telnet服務器,然後我得到的響應作爲文本或字節數組。唯一的問題是該組件未設置爲執行此操作。該組件允許我將命令發送到服務器,但響應通過函數句柄返回。所以實質上,我需要一種在處理程序處理它時暫停應用程序的方法。下面是我計劃如何避開這一問題的例子:創建一個循環暫停腳本的時候,回調函數運行
static void Main(string[] args)
{
Telnet telCon = new Telnet();
telCon.OnDataIn += new Telnet.OnDataInHandler(HandleDataIn);
telCon.Connect(remoteHostStr);
while (true) ;
}
public static void HandleDataIn(object sender, TelnetDataInEventArgs e)
{
string responseStr = e.Text;
if (responseStr.Contains("Username:"))
{
((Telnet)sender).Send(System.Text.ASCIIEncoding.ASCII.GetBytes(username));
}
else if (responseStr.Contains("Password:"))
{
((Telnet)sender).Send(System.Text.ASCIIEncoding.ASCII.GetBytes(password));
}
}
上述解決方案將無法工作,因爲while
將始終運行,但我可能會建立使用某種全局變量的未來版本跟蹤循環是否仍然需要運行。然而,我所學過的關於編程的所有東西都說這很髒。任何人都可以想辦法繞過我的困境嗎?
謝謝, 克里斯
作爲一個測試,我正在使用它在一個控制檯應用程序。最終它將成爲ASP.NET頁面的一部分,並且來自Telnet服務器的輸出將被寫入頁面響應中。 – regex 2009-04-14 20:21:30