执行Telnet握手

时间:2016-08-15 01:02:50

标签: c# telnet handshake

我正在编写一个(希望很简单的)控制台应用程序,用于向运行telnet的音频设备发送命令。这些命令允许我改变其中包含的DSP组件的状态,例如:ToneGen set mute true

我遇到麻烦的是telnet握手,我知道有很多命令从Telnet服务器发送到客户端,客户端需要响应这些命令才能成功协商会话的开始。我只是不知道发送正确的命令。以下是我的一些不成功的尝试。

这是我到目前为止的代码:

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace telnetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress address = IPAddress.Parse("192.168.10.101");
            int port = 23;
            IPEndPoint endpoint = new IPEndPoint(address, port);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            Console.WriteLine("Establishing Connection to {0}", address);

            s.Connect(endpoint);


            byte[] Bytes = Encoding.ASCII.GetBytes("0xFC\0xFC\0XFC");
            s.Send(Bytes);

            byte[] buffer = new byte[50];
            s.Receive(buffer);
            Console.WriteLine(Encoding.ASCII.GetString(buffer));
            Console.ReadKey();
        }
    }
}

代码的输出如下:

Establishing Connection to 192.168.10.101
??↑?? ??#??'??$

所以我认为我有两个核心问题:

1)如何检测来自音频设备的握手请求 2)如何发送适当的回复。

非常感谢任何帮助。

更新1

byte[] buffer = new byte[1024];
int vari = s.Receive(buffer);
string hex1 = vari.ToString("X");
Console.WriteLine(hex1);

连接hex1后返回值15

更新2

Console.WriteLine("Sending Bytes");
byte[] Bytes1 = Encoding.ASCII.GetBytes("0xFF 0xFC 0x18 0xFF 0xFD 0x20 0xFF 0xFC 0x23 0xFF 0xFD 0x27 0xFF 0xFC 0x24 \n");
s.Send(Bytes1);

在上面的代码之后,我正在使用以下代码

寻找服务器的下一个响应
byte[] buffer2 = new byte[1024];
int byteCount2 = s.Receive(buffer2);
Console.WriteLine(byteCount2 + " Bytes Found");

我在控制台中看到的只有短语"发送字节"所以似乎没有发送Bytes1并且没有其他响应字节可供读取。

0 个答案:

没有答案