C# Ts3与C的telnet连接#

C# Ts3与C的telnet连接#,c#,telnet,teamspeak,C#,Telnet,Teamspeak,我尝试在C#应用程序中使用telnet连接到TeamSpeak 3服务器 顺便说一句,我对使用telnet ^^不是很有经验,所以我在网站上展示了telnet代码 以下代码应: 连接到teamspeak服务器 发送密码并宣读欢迎信息 发送命令“help”并读取帮助消息 string command = "help"; // creates new TCP client TcpClient client = new TcpClient(adress, port);

我尝试在C#应用程序中使用telnet连接到TeamSpeak 3服务器

顺便说一句,我对使用telnet ^^不是很有经验,所以我在网站上展示了telnet代码

以下代码应:

  • 连接到teamspeak服务器
  • 发送密码并宣读欢迎信息
  • 发送命令“help”并读取帮助消息

        string command = "help";
    
        // creates new TCP client
        TcpClient client = new TcpClient(adress, port);
    
        // get client stream
        NetworkStream stream = client.GetStream();
    
        // send Password
        Byte[] data = System.Text.Encoding.ASCII.GetBytes(password);
        stream.Write(data, 0, data.Length);
        data = new Byte[256];
        Thread.Sleep(200);
    
        Int32 bytes = stream.Read(data, 0, data.Length);
        String responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
        Console.WriteLine(responseData);
    
    
        // send the given command
        Byte[] data2 = System.Text.Encoding.ASCII.GetBytes(command);
        stream.Write(data2, 0, data2.Length);
        data2 = new Byte[2560];
        Thread.Sleep(200);
    
        Int32 bytes2 = stream.Read(data2, 0, data2.Length);
        String responseData2 = System.Text.Encoding.ASCII.GetString(data2, 0, bytes2);
        Console.WriteLine(responseData2);
    
        // end stream and client
        stream.Close();
        client.Close();
    
  • 第一个查询正常工作,并将欢迎消息写入控制台。但是在
    Int32 bytes2=stream.Read(data2,0,data2.Length)
    在second查询中,应用程序停止而不返回任何验证


    有人能解释为什么我无法读取帮助消息吗?

    应用程序出现停止的原因是,如果没有可读取的数据且连接仍处于打开状态,应用程序将被阻止。请注意,在调用
    stream.Read(data2,0,data2.Length)
    之前,我们可以看到属性设置为
    false

    现在,关于为什么没有可用数据:您需要使用换行符终止命令,以便TeamSpeak知道命令已完成:

    string command = "help\n";
    
    ...
    
    // send the given command
    byte[] data2 = Encoding.ASCII.GetBytes(command);
    stream.Write(data2, 0, data2.Length);
    
    出于同样的原因,您的第一个查询实际上没有成功。欢迎消息由服务器在connect上发送;这不是对你命令的回应。此外,我看不到
    password
    的值是多少,但是如果您打算登录完整的命令是
    login
    ,如下所示:

    TS3
    欢迎使用TeamSpeak 3服务器查询界面,键入“帮助”可查看命令列表,键入“帮助”可查看特定命令的信息。
    登录服务器管理员hunter2
    错误id=0消息=ok


    如果您不反对使用库,我在(code at)有一个NuGet软件包,它可以为您完成所有telnet通信…感谢您的提议,但当我能够自己实现所有功能时,我总是很高兴。让我知道我在做什么^^是的,我也有点像。看看Github上的代码,如果您仍然被卡住了。祝你好运