(1) Socket網絡編程(C#)----TcpListener 與 TcpClient


◇TcpListener 用於阻止同步模式下偵聽和接受傳入連接請求。(用於偵聽)

      ◇我們先來做一件事情,對本地機器上某一端口的偵聽。

      ◇因為如果想要與外界進行通信,第一件要做的事情就是開啟對端口的偵聽,這就像為計算機打開了一個“門”,所有向這個“門”發送的請求(“敲門”)都會被系統接收到。

  ◇在C#中可以通過下面幾個步驟完成,首先使用本機Ip地址和端口號創建一個System.Net.Sockets.TcpListener類型的實例,然后在該實例上調用Start()方法,從而開啟對指定端口的偵聽。

  ◇創建一個控制台程序,名為MyTcpListener具體代碼,如下:

 1 using System.Net;               // 引入這兩個命名空間,以下同
 2 using System.Net.Sockets;
 3 using ... //
 4 
 5 class Server {
 6     static void Main(string[] args) {
 7         Console.WriteLine("Server is running ... ");
 8         IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
 9         TcpListener listener = new TcpListener(ip, 8500);
10 
11         listener.Start();           // 開始偵聽
12         Console.WriteLine("Start Listening ...");
13 
14         Console.WriteLine("\n\n輸入\"Q\"鍵退出。");
15         ConsoleKey key;
16         do {
17             key = Console.ReadKey(true).Key;
18         } while (key != ConsoleKey.Q);
19     }
20 }

  ◇說明:我們利用TcpListener類的構造函數,實例化出了一個listener對象,監聽了127.0.0.1(也就是本地機器)的8500端口。我們可以在“運行——》cmd——》利用命令netstate -an”來查看我們當前機器所監聽的狀態(可以找到這個8500端口),這里就不演示了。

 

◇TcpClient類是用於在同步阻塞模式下通過網絡來連接、發送和接受數據流。(用於請求)

  ◇每創建一個新的TcpClient便相當於創建了一個新的套接字Socket去與服務端通信,.Net會自動為這個套接字分配一個端口號,上面說過,TcpClient類不過是對Socket進行了一個包裝。創建TcpClient類型實例時,可以在構造函數中指定遠程服務器的地址和端口號。這樣在創建的同時,就會向遠程服務端發送一個連接請求(“握手”),一旦成功,則兩者間的連接就建立起來了。也可以使用重載的無參數構造函數創建對象,然后再調用Connect()方法,在Connect()方法中傳入遠程服務器地址和端口號,來與服務器建立連接。

  ◇創建一個控制台程序,名為MyTcpClient,具體代碼如下:

 1 class Client {
 2     static void Main(string[] args) {
 3 
 4         Console.WriteLine("Client Running ...");
 5         TcpClient client = new TcpClient();
 6         try {
 7             client.Connect("localhost", 8500);      // 與服務器連接
 8         } catch (Exception ex) {
 9             Console.WriteLine(ex.Message);
10             return;
11         }
12         // 打印連接到的服務端信息
13         Console.WriteLine("Server Connected!{0} --> {1}",
14             client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
15 
16         // 按Q退出
17     }
18 }

 

  ◇說明:其中Connect()方法中的參數就是需要連接主機的ip地址號以及端口號。

 

◇這時候我們就可以先運行MyTcpListener(不要關掉),然后再運行MyTcpClient,看看運行的結果如何。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM