偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#服務端與客戶端連接實現淺析

開發(fā) 后端
C#服務端與客戶端連接實現需要注意什么呢?C#服務端與客戶端連接實現具體的步驟等等,本文向你一一介紹。

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

這里需要注意的是,不管是使用有參數的構造函數與服務器連接,或者是通過Connect()方法與服務器建立連接,都是同步方法(或者說是阻塞的,英文叫block)。它的意思是說,客戶端在與服務端連接成功、從而方法返回,或者是服務端不存、從而拋出異常之前,是無法繼續(xù)進行后繼操作的。這里還有一個名為BeginConnect()的方法,用于實施異步的連接,這樣程序不會被阻塞,可以立即執(zhí)行后面的操作,這是因為可能由于網絡擁塞等問題,連接需要較長時間才能完成。網絡編程中有非常多的異步操作,凡事都是由簡入難,關于異步操作,我們后面再討論,現在只看同步操作。

創(chuàng)建一個新的控制臺應用程序項目,命名為ClientConsole,它是我們的客戶端,然后添加下面的代碼,創(chuàng)建與服務器的連接:

C#服務端與客戶端連接實現實例:

  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. }//C#服務端與客戶端連接實現 

上面帶代碼中,我們通過調用Connect()方法來與服務端連接。隨后,我們打印了這個連接消息:本機的Ip地址和端口號,以及連接到的遠程Ip地址和端口號。TcpClient的Client屬性返回了一個Socket對象,它的LocalEndPoint和RemoteEndPoint屬性分別包含了本地和遠程的地址信息。先運行服務端,再運行這段代碼。可以看到兩邊的輸出情況如下:

  1. // 服務端:  
  2. Server is running ...  
  3. Start Listening ...  
  4.  
  5. // 客戶端:  
  6. Client Running ...  
  7. Server Connected!127.0.0.1:4761 --> 127.0.0.1:8500 

我們看到客戶端使用的端口號為4761,上面已經說過,這個端口號是由.NET隨機選取的,并不需要我們來設置,并且每次運行時,這個端口號都不同。再次打開“命令提示符”,輸入“netstat -a”,可以看到下面的C#服務端與客戶端連接實現實例輸出:

  1. TCPjimmy:8500 0.0.0.0:0      LISTENING  
  2. TCPjimmy:8500 localhost:4761 ESTABLISHED  
  3. TCPjimmy:4761 localhost:8500 ESTABLISHED 

從這里我們可以得出幾個重要信息:1、端口8500和端口4761建立了連接,這個4761端口便是客戶端用來與服務端進行通信的端口;2、8500端口在與客戶端建立起一個連接后,仍然繼續(xù)保持在監(jiān)聽狀態(tài)。這也就是說一個端口可以與多個遠程端口建立通信,這是顯然的,大家眾所周之的HTTP使用的默認端口為80,但是一個Web服務器要通過這個端口與多少個瀏覽器通信啊。

C#服務端與客戶端連接實現的情況就向你介紹到這里,希望對你了解和學習C#服務端與客戶端連接實現有所幫助。

【編輯推薦】

  1. C#異步傳輸字符串服務端的實現
  2. C#異步傳輸字符串客戶端的實現
  3. C#網絡編程基本概念TCP淺析
  4. C#網絡聊天程序三大模式淺析
  5. C#服務端端口偵聽淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 15:54:40

服務端與客戶端

2009-08-21 16:14:52

服務端與客戶端通信

2009-08-21 15:22:56

端口偵聽

2009-08-21 17:53:25

C#網絡編程客戶端程序

2011-09-09 09:44:23

WCF

2023-03-06 08:01:56

MySQLCtrl + C

2009-08-21 16:37:54

C#客戶端程序

2009-08-21 17:48:43

C#網絡編程

2009-08-21 16:27:44

C#服務端程序

2009-07-15 17:33:08

Swing客戶端

2009-08-06 17:12:13

C# WebServi

2010-03-18 17:47:07

Java 多客戶端通信

2010-02-24 16:39:27

WCF客戶端處理

2021-10-19 08:58:48

Java 語言 Java 基礎

2022-09-05 14:36:26

服務端TCP連接

2024-03-06 14:58:52

客戶端微服務架構

2010-11-19 14:22:04

oracle服務端

2020-03-19 08:00:00

客戶端KubernetesAPI

2023-04-03 08:13:05

MySQLCtrl + C
點贊
收藏

51CTO技術棧公眾號