日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

C#服務(wù)端與客戶端通信之獲取多個(gè)客戶端連接的情況是如何處理的呢?讓我們來看看:

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),圖們網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:圖們等地區(qū)。圖們做網(wǎng)站價(jià)格咨詢:13518219792

C#服務(wù)端與客戶端通信的問題:現(xiàn)在我們再接著考慮,如果有多個(gè)客戶端發(fā)動(dòng)對服務(wù)器端的連接會(huì)怎么樣,為了避免你將瀏覽器向上滾動(dòng),來查看上面的代碼,我將它拷貝了下來,我們先看下客戶端的關(guān)鍵代碼:

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

 
 
 
  1. TcpClient client;
  2. for (int i = 0; i <=2; i++) {
  3.     try {
  4.         client = new TcpClient();
  5.         client.Connect("localhost", 8500);
  6. // 與服務(wù)器連接
  7.     } catch (Exception ex) {
  8.         Console.WriteLine(ex.Message);
  9.         return;
  10.     }
  11.     // 打印連接到的服務(wù)端信息
  12.     Console.WriteLine(
  13. "Server Connected!{0} --> {1}",
  14. client.Client.LocalEndPoint,
  15.  client.Client.RemoteEndPoint);
  16. }

C#服務(wù)端與客戶端通信問題:如果服務(wù)端代碼不變,我們先運(yùn)行服務(wù)端,再運(yùn)行客戶端,那么接下來會(huì)看到這樣的輸出:

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

就又回到了本章第2.2小節(jié)“多個(gè)客戶端與服務(wù)端連接”中的處境:盡管有三個(gè)客戶端連接到了服務(wù)端,但是服務(wù)端程序只接收到了一個(gè)。這是因?yàn)榉?wù)端只調(diào)用了一次listener.AcceptTcpClient(),而它只對應(yīng)一個(gè)連往客戶端的Socket。但是操作系統(tǒng)是知道連接已經(jīng)建立了的,只是我們程序中沒有處理到,所以我們當(dāng)我們輸入“netstat -a”時(shí),仍然會(huì)看到3對連接都已經(jīng)建立成功。

為了能夠接收到三個(gè)客戶端的連接,我們只要對服務(wù)端稍稍進(jìn)行一下修改,將AcceptTcpClient方法放入一個(gè)do/while循環(huán)中就可以了:

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

 
 
 
  1. Console.WriteLine("Start Listening ...");
  2. while (true) {
  3.     // 獲取一個(gè)連接,同步方法
  4.     TcpClient remoteClient = 
  5. listener.AcceptTcpClient();
  6.     // 打印連接到的客戶端信息
  7.     Console.WriteLine("Client Connected!{0} <-- {1}",
  8. remoteClient.Client.LocalEndPoint, 
  9. remoteClient.Client.RemoteEndPoint);
  10. }

這樣看上去是一個(gè)死循環(huán),但是并不會(huì)讓你的機(jī)器系統(tǒng)資源迅速耗盡。因?yàn)榍懊嬉呀?jīng)說過了,AcceptTcpClient()再?zèng)]有收到客戶端的連接之前,是不會(huì)繼續(xù)執(zhí)行的,它的大部分時(shí)間都在等待。另外,服務(wù)端幾乎總是要保持在運(yùn)行狀態(tài),所以這樣做并無不可,還可以省去“按Q退出”那段代碼。此時(shí)再運(yùn)行代碼,會(huì)看到服務(wù)端可以收到3個(gè)客戶端的連接了。

C#服務(wù)端與客戶端通信實(shí)例運(yùn)行結(jié)果:

 
 
 
  1. Server is running ...
  2. Start Listening ...
  3. Client Connected!127.0.0.1:8500 <-- 127.0.0.1:5305
  4. Client Connected!127.0.0.1:8500 <-- 127.0.0.1:5306
  5. Client Connected!127.0.0.1:8500 <-- 127.0.0.1:5307

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


分享題目:C#服務(wù)端與客戶端通信詳解
分享地址:http://www.dlmjj.cn/article/cccpdoh.html