Ts3与C#的telnet连接

时间:2015-12-11 20:48:08

标签: c# telnet teamspeak

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

顺便说一句,我使用telnet ^^'的经验不是很充实,所以我在网站上显示了telnet代码 https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient(VS.80).aspx

以下代码应该:

  1. 连接到teamspeak服务器
  2. 发送密码并宣读欢迎信息
  3. 发送命令“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();
    
  4. 第一个查询按预期工作,并将欢迎消息写入控制台。但是在第二个查询的Int32 bytes2 = stream.Read(data2, 0, data2.Length);处,应用程序停止而不返回任何异常。

    有谁可以解释为什么我不能读出帮助信息?

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

string command = "help\n";

...

// send the given command
byte[] data2 = Encoding.ASCII.GetBytes(command);
stream.Write(data2, 0, data2.Length);

出于同样的原因,您的第一个查询实际上没有成功。欢迎消息由服务器在连接时发送;它不是对你命令的回应。另外,我无法看到password的值是什么,但如果您打算登录完整命令login <username> <password>,请执行以下操作:

  

TS3
  欢迎使用TeamSpeak 3 ServerQuery界面,输入&#34; help&#34;获取命令列表和&#34; help&lt; command&gt;&#34;有关特定命令的信息   登录serveradmin hunter2
  错误id = 0 msg = ok