TcpClient 클래스를 사용하여 텔넷 연결을 구현합니다. 내가 모르는 것은 응답의 끝을 결정하는 방법입니다. 일단 DataAvailable 속성이 true가되면, 스트림에서 데이터를 읽은 다음 DataAvailable을 일시적으로 false로 설정하고 버퍼가 다른 데이터 청크로 채워지지만 모든 데이터가 읽혀지고 사라지는 것 같습니다. 모든 응답을 읽었는지 어떻게 확인합니까?프로그래밍 방식으로 텔넷 연결 지연을 처리하는 방법은 무엇입니까?
올바르게 작동하려면 아래의 코드 스 니펫을 변경하는 방법을 알려주세요. 전체 응답을 검색 할 시간이 충분하기 때문에 코드를 단계별로 실행할 때 올바르게 작동합니다. 당신의 도움을 주셔서 감사합니다.
if (this.Stream.DataAvailable)
{
readBuffer = new Byte[this.Client.ReceiveBufferSize];
do
{
// read data
bytes = this.Stream.Read(readBuffer, 0, readBuffer.Length);
Thread.Sleep(10);
responseData = String.Concat(responseData, System.Text.Encoding.ASCII.GetString(readBuffer, 0, bytes));
} while (this.Stream.DataAvailable);
allDataRead = true;
break;
}
tcp/ip 소켓과 포트 23을 사용하는 텔넷 서버에 대한 연결입니다. 서버가 연결을 종료하지 않습니다. 텔넷 세션의 첫 번째 부분은 서버가 첫 번째 사용자 이름을 묻고 암호를 묻는 경우의 인증입니다. 구분 기호를 확인하고 나중에 알려 드리겠습니다. 고맙습니다. – David
유닉스/BSD/Windows/etc에서 텔넷 서버가 콘솔 세션이라고 가정합니다. 명령 프롬프트 텍스트를 구분 기호로 사용할 수 있습니다. –