簡體   English   中英

TS3 telnet與C#的連接

[英]Ts3 telnet connection with C#

我嘗試在C#應用程序中使用telnet連接到TeamSpeak 3服務器。

順便說一句,我使用telnet ^^'的經驗不是很豐富,所以我在以下站點上顯示了telnet代碼: https://msdn.microsoft.com/zh-cn/library/system.net.sockets.tcpclient(VS。 80).aspx

以下代碼應:

  1. 連接到teampeak服務器
  2. 發送密碼並讀出歡迎信息
  3. 發送命令“幫助”並讀出幫助消息

      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); 在第二個查詢中,應用程序停止運行而沒有返還任何證據。

誰能解釋為什么我無法讀出幫助消息?

該應用程序似乎停止的原因是,如果沒有可供讀取的數據並且連接仍處於打開狀態,則NetworkStream.Read()將阻塞。 請注意,調用之前stream.Read(data2, 0, data2.Length)我們可以看到, stream.DataAvailable屬性被設置為false

在此處輸入圖片說明

現在,為什么沒有可用數據:您需要使用換行符終止命令,以便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界面,鍵入“ help”獲得命令列表,並鍵入“ help <command>”獲得有關特定命令的信息。
登錄serveradmin hunter2
錯誤id = 0 msg = ok

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM