현재 TCP 프로젝트 서버 및 일부 장치에 연결하는 네트워크 프로젝트에서 작업 중입니다. 오랫동안 TCP 코드를 보내고 일부 장치 모델에 대한 응답을받는 코드를 아래 코드에서 성공적으로 사용했지만 Windows Telnet Server 2003 및 Fortigate 장치를 사용해도 TCP 연결을 성공적으로 구축 할 수는 있지만 응답으로 모두 얻을 수 있습니다. 어떤 문자가 ?? % ?????? ???? '와 같이 설정되어 있습니다.C# TcpClient가 성공적으로 연결된 텔넷 서버/장치에서 유효한 응답을 읽을 수 없습니다.
응답을 수신에 대한 나의 기능은 다음과 같습니다
private string receive()
{
StringBuilder sbReadBuffer = new StringBuilder();
bool isFinished = false;
NetworkStream ns = tcpClient.GetStream();
DateTime lastConTime = DateTime.Now;
while (!isFinished)
{
if (!ns.DataAvailable)
{
Thread.Sleep(200);
if ((DateTime.Now - lastConTime).TotalSeconds > Prms.tcpSendReceiveTimeoutInSeconds)
break;
else
continue;
}
Int32 receiveCount = ns.Read(receiveBuffer, 0, receiveBuffer.Length);
String received = new ASCIIEncoding().GetString(receiveBuffer, 0, receiveCount);
sbReadBuffer.Append(received);
foreach (String terminaterToken in terminaterTokens)
if (sbReadBuffer.ToString().EndsWith(terminaterToken))
isFinished = true;
lastConTime = DateTime.Now;
}
return sbReadBuffer.ToString();
}
}
과 기능 TCP 연결을 구축하고 수신 전화에 대한
: 나는 장치에 수신 된 메시지를 테스트 TcpClient tcpClient = new TcpClient()
{
SendTimeout = 10000,
ReceiveTimeout = 10000
};
tcpClient.Connect(wanIp, 23);
String initialMessage = receive();
위의 코드 문제없이 작동 각기 다른 장치 모델에 대해 초기 응답은 항상 "?? % ?????? ????" 그러나 환영받은 응답과 같은 논리 응답이 뒤 따랐습니다.
테스트 과정에서 프로그램이 서버/장치에 성공적으로 연결되었지만 유효한 응답을받을 수 없다는 것을 알았습니다. 그 이유는 모르겠습니다. 이것에 대한 어떤 생각?