日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#服務(wù)端與客戶端通信淺析

C#服務(wù)端與客戶端通信的建立:上面服務(wù)端、客戶端的代碼已經(jīng)建立起了連接,這通過(guò)使用“netstat -a”命令,從端口的狀態(tài)可以看出來(lái),但這是操作系統(tǒng)告訴我們的。那么我們現(xiàn)在需要知道的就是:服務(wù)端的程序如何知道已經(jīng)與一個(gè)客戶端建立起了連接?

創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,包括成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷等。創(chuàng)新互聯(lián)建站為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)建站核心團(tuán)隊(duì)10余年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

服務(wù)器端開始偵聽以后,可以在TcpListener實(shí)例上調(diào)用AcceptTcpClient()來(lái)獲取與一個(gè)客戶端的連接,它返回一個(gè)TcpClient類型實(shí)例。此時(shí)它所包裝的是由服務(wù)端去往客戶端的Socket,而我們?cè)诳蛻舳藙?chuàng)建的TcpClient則是由客戶端去往服務(wù)端的。這個(gè)方法是一個(gè)同步方法(或者叫阻斷方法,block method),意思就是說(shuō),當(dāng)程序調(diào)用它以后,它會(huì)一直等待某個(gè)客戶端連接,然后才會(huì)返回,否則就會(huì)一直等下去。這樣的話,在調(diào)用它以后,除非得到一個(gè)客戶端連接,不然不會(huì)執(zhí)行接下來(lái)的代碼。一個(gè)很好的類比就是Console.ReadLine()方法,它讀取輸入在控制臺(tái)中的一行字符串,如果有輸入,就繼續(xù)執(zhí)行下面代碼;如果沒有輸入,就會(huì)一直等待下去。

C#服務(wù)端與客戶端通信實(shí)現(xiàn)實(shí)例:

 
 
 
  1. class Server {  
  2. static void Main(string[] args) {  
  3. Console.WriteLine("Server is running ... ");  
  4. IPAddress ip = new IPAddress(  
  5. new byte[] { 127, 0, 0, 1 });  
  6. TcpListener listener = new TcpListener(ip, 8500);  
  7.  
  8. listener.Start();   // 開始偵聽  
  9. Console.WriteLine("Start Listening ...");  
  10.  
  11. // 獲取一個(gè)連接,中斷方法  
  12. TcpClient remoteClient = listener.AcceptTcpClient();  
  13.  
  14. // 打印連接到的客戶端信息  
  15. Console.WriteLine("Client Connected!{0} <-- {1}",  
  16.    remoteClient.Client.LocalEndPoint,  
  17.  remoteClient.Client.RemoteEndPoint);  
  18.  
  19. // 按Q退出  
  20. }  
  21. }  

運(yùn)行這段C#服務(wù)端與客戶端通信實(shí)現(xiàn)代碼,會(huì)發(fā)現(xiàn)服務(wù)端運(yùn)行到listener.AcceptTcpClient()時(shí)便停止了,并不會(huì)執(zhí)行下面的Console.WriteLine()方法。為了讓它繼續(xù)執(zhí)行下去,必須有一個(gè)客戶端連接到它,所以我們現(xiàn)在運(yùn)行客戶端,與它進(jìn)行連接。簡(jiǎn)單起見,我們只在客戶端開啟一個(gè)端口與之連接:

 
 
 
  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);  // 與服務(wù)器連接  
  8. } catch (Exception ex) {  
  9. Console.WriteLine(ex.Message);  
  10. return;  
  11. }  
  12. // 打印連接到的服務(wù)端信息  
  13. Console.WriteLine("Server Connected!{0} --> {1}",  
  14. client.Client.LocalEndPoint,   
  15. client.Client.RemoteEndPoint);  
  16.  
  17. // 按Q退出  
  18. }  
  19. }  

此時(shí)C#服務(wù)端與客戶端通信實(shí)現(xiàn),服務(wù)端、客戶端的輸出分別為:

 
 
 
  1. // 服務(wù)端  
  2. Server is running ...  
  3. Start Listening ...  
  4. Client Connected!127.0.0.1:8500 <-- 127.0.0.1:5188  
  5.  
  6. // 客戶端  
  7. Client Running ...  
  8. Server Connected!127.0.0.1:5188 --> 127.0.0.1:8500  

C#服務(wù)端與客戶端通信的基本情況就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#服務(wù)端與客戶端通信實(shí)現(xiàn)有所幫助。


文章名稱:C#服務(wù)端與客戶端通信淺析
網(wǎng)址分享:http://www.5511xx.com/article/dhsdpdo.html