현재 .NET에서 타사 구성 요소를 사용하여 텔넷 연결을 처리하고 있습니다. 수신 텔넷 서버에 명령을 보내는 곳을 동기식으로 설정하고 응답을 텍스트 또는 바이트 배열로 반환합니다. 문제는 구성 요소가이를 수행하도록 설정되어 있지 않다는 것입니다. 구성 요소를 사용하면 서버에 명령을 보낼 수 있지만 응답은 함수 핸들을 통해 반환됩니다. 따라서 본질적으로 처리기가 처리하는 동안 응용 프로그램을 일시 중지하는 방법이 필요합니다. 여기에 내가 그 문제를 해결하기 위해 계획하는 방법의 예는 다음과 같습니다콜백 함수가 작동하는 동안 스크립트를 일시 중지하는 루프 만들기
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 페이지의 일부가되며 텔넷 서버의 출력은 페이지 응답에 기록됩니다. – regex