C# 中的 Telnet 庫
![C# 中的 Telnet 庫](/img/Csharp/feature-image---csharp-telnet-library.webp)
本教程將解釋 Telnet 庫並用 C# 演示一個簡單的 Telnet 介面。
C#
中的 Telnet 庫
Telnet 是一種網路協議,允許你虛擬連線到計算機並在兩個工作站之間建立雙向、相互支援、基於文字的通訊通道。
它使用使用者命令傳輸控制協議/網際網路協議 (TCP/IP) 網路協議建立遠端會話。
在 Web 上,超文字傳輸協議 (HTTP) 和檔案傳輸協議 (FTP) 僅允許使用者從遠端計算機請求特定檔案。
但是,Telnet 允許使用者以普通使用者的身份登入,並具有為該機器上的特定應用程式和資料提供的功能。
例子:
此類的可能應用程式包括 Telnet 終端、基於必須在伺服器上執行的某些 UNIX 命令的 Windows GUI,以及執行 telnet 指令碼的軟體。
此程式碼提供了一個簡約的終端和通過檔案管道部署指令碼的選項。
首先,匯入以下庫:
using System;
using System.Collections.Generic;
using System.Text;
在名稱空間 MinimalisticTelnet
中建立一個 Telnet
類來編寫程式碼。
namespace MinimalisticTelnet {
class Telnet {}
}
在 Main
函式中的埠 23
上建立一個名為 Tcon
到主機名 shani
的新 telnet 連線。Telnet 協議通常使用埠 Port 23
。
TelnetConnection Tcon = new TelnetConnection("shani", 23);
在 Login()
方法的幫助下,構造一個字串變數 t
,它將包含登入憑據,例如 root
、rootpassword
和 timeout
。我們提供了 root
、rootpassword
和 130 秒的 timeout
。
它將顯示伺服器輸出,如你在以下程式碼行中所見。
string t = Tcon.Login("root", "rootpassword", 130);
Console.Write(t);
獲得伺服器輸出後,我們將驗證伺服器輸出。它應該以 $
或 >
結尾;否則,將引發異常,並顯示訊息 Something went wrong, failed to connect
。
string Prmpt = t.TrimEnd();
Prmpt = t.Substring(Prmpt.Length - 1, 1);
if (Prmpt != "$" && Prmpt != ">")
throw new Exception("Something went wrong failed to connect ");
Prmpt = "";
現在,我們將使用 while
迴圈並將 telnet 連線 Tcon
作為引數傳遞,以檢視它是否已連線。如果已連線,則迴圈執行;否則,它將終止並顯示訊息 Disconnected
。
while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
}
Console.WriteLine("Disconnected");
Console.ReadLine();
最後,在 while
迴圈的主體中編寫以下程式碼。
while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
Console.Write(Tcon.Read());
Prmpt = Console.ReadLine();
Tcon.WriteLine(Prmpt);
Console.Write(Tcon.Read());
}
伺服器的輸出將顯示在以下程式碼行中。
Console.Write(Tcon.Read());
這會將所有客戶端的資訊或輸入傳輸到伺服器。
Prmpt = Console.ReadLine();
Tcon.WriteLine(Prmpt);
輸入客戶端資訊後,此程式碼將顯示伺服器的輸出。
Console.Write(Tcon.Read());
示例程式碼:
using System;
using System.Collections.Generic;
using System.Text;
namespace MinimalisticTelnet {
class Telnet {
static void Main(string[] args) {
TelnetConnection Tcon = new TelnetConnection("shani", 23);
string t = Tcon.Login("root", "rootpassword", 130);
Console.Write(t);
string Prmpt = t.TrimEnd();
Prmpt = t.Substring(Prmpt.Length - 1, 1);
if (Prmpt != "$" && Prmpt != ">")
throw new Exception("Something went wrong failed to connect ");
Prmpt = "";
while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
Console.Write(Tcon.Read());
Prmpt = Console.ReadLine();
Tcon.WriteLine(Prmpt);
Console.Write(Tcon.Read());
}
Console.WriteLine("Disconnected");
Console.ReadLine();
}
}
}
C#
中 Telnet 庫的應用
Telnet 允許使用者連線到任何使用基於文字的未加密協議的程式,例如 Web 伺服器和埠。
Telnet 可用於在伺服器上執行一系列任務,包括檔案編輯、程式執行和電子郵件檢查。
各種伺服器通過 Telnet 提供對公共資料的遠端訪問,允許使用者玩簡單的遊戲或檢視天氣預報。其中許多功能之所以持續存在,是因為它們懷舊或與需要某些資料的早期系統相容。
C#
中 Telnet 庫的後果
Telnet 存在安全漏洞。這是一個未加密的、不安全的協議。
在 Telnet 會話期間,任何監視使用者連線的人都可以看到使用者的登入名、密碼和其他以明文形式編寫的私人資訊。此資料可用於訪問使用者的裝置。
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn