NetworkStream和C#套接字中的命令执行

时间:2014-04-25 15:16:25

标签: c# .net sockets network-programming

使用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";

1 个答案:

答案 0 :(得分:0)

你说用telnet可以与机器通信。在套接字会话中,您是否遵循telnet协议规范?阅读this

请记住,telnet "\n\r"不是您认为的那样。在telnet会话中,您不会发送新行(\ n或#10或Ctrl + J)字符。您所能做的就是发送carriage return,模拟器可以将其转换为line feed

很难给你一个直接的答案,但有一点我可以推荐你保存你的telnet仿真会话并进行分析,那里有很多软件可以显示您通过网络发送和接收的数据包。如果它适用于模拟器,那么它应该与套接字会话一起使用,但您must obey规则。