使用NetworkStream
我尝试将一些命令传递到具有正确/r/n
的计算机中以防新行;如果是tab键则传递/t
。传递命令的目的是将6位数代码配置到机器中。我面临的主要问题是我无法经常访问机器,也无法调试我的应用程序。为此,我在成功执行每个命令后将消息写入文本文件,并尝试捕获错误/异常,以防发生在文本文件中。执行程序后,我无法将该代码放入机器中,也无法在文本文件中获得任何类型的错误/异常。
我在代码中注意到的一件事是我没有关闭NetworkStream.close();
。这是问题还是不同的东西?此外,我正在将命令传递给机器,我不是试图从机器获得任何类型的响应。是否可以尝试从机器获得响应。
同时在TELNET中执行上述命令时,我可以配置authcode。
以下是我的示例代码:
try
{
using (NetworkStream stream = client.GetStream())
{
byte[] terminal = Encoding.ASCII.GetBytes(port2 + "\r\n");
stream.Write(terminal, 0, terminal.Length);
Thread.Sleep(5000);
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("Terminal Value Entered !");
}
byte[] aChServ = Encoding.ASCII.GetBytes(ch + "\r\n");
stream.Write(aChServ, 0, aChServ.Length);
Thread.Sleep(5000);
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("New Authcode Request !");
}
byte[] aSpace = Encoding.ASCII.GetBytes(" " + "\t" + " ");
stream.Write(aSpace, 0, aSpace.Length);
Thread.Sleep(5000);
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("Authcode Configured !");
}
}
代码开放连接..
try
{
client.Connect(new IPEndPoint(IPAddress.Parse(ip), intport));
Thread.Sleep(5000);
}
catch (Exception ex)
{
// Log the error here.
client.Close();
continue;
}
和价值观......
port2=4410
string ch = "change authorization-code 999999";
答案 0 :(得分:0)
你说用telnet可以与机器通信。在套接字会话中,您是否遵循telnet协议规范?阅读this。
请记住,telnet "\n\r"
不是您认为的那样。在telnet会话中,您不会发送新行(\ n或#10或Ctrl + J)字符。您所能做的就是发送carriage return
,模拟器可以将其转换为line feed
。
很难给你一个直接的答案,但有一点我可以推荐你保存你的telnet仿真会话并进行分析,那里有很多软件可以显示您通过网络发送和接收的数据包。如果它适用于模拟器,那么它应该与套接字会话一起使用,但您must obey
规则。