日韩无码专区无码一级三级片|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ù)端與客戶端連接實(shí)現(xiàn)淺析

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

創(chuàng)新互聯(lián)建站公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元王屋做網(wǎng)站,已為上家服務(wù),為王屋各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

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

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

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

 
 
 
  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, client.Client.RemoteEndPoint);  
  15.  
  16. // 按Q退出  
  17. }  
  18. }//C#服務(wù)端與客戶端連接實(shí)現(xiàn) 

上面帶代碼中,我們通過(guò)調(diào)用Connect()方法來(lái)與服務(wù)端連接。隨后,我們打印了這個(gè)連接消息:本機(jī)的Ip地址和端口號(hào),以及連接到的遠(yuǎn)程Ip地址和端口號(hào)。TcpClient的Client屬性返回了一個(gè)Socket對(duì)象,它的LocalEndPoint和RemoteEndPoint屬性分別包含了本地和遠(yuǎn)程的地址信息。先運(yùn)行服務(wù)端,再運(yùn)行這段代碼。可以看到兩邊的輸出情況如下:

 
 
 
  1. // 服務(wù)端:  
  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 

我們看到客戶端使用的端口號(hào)為4761,上面已經(jīng)說(shuō)過(guò),這個(gè)端口號(hào)是由.NET隨機(jī)選取的,并不需要我們來(lái)設(shè)置,并且每次運(yùn)行時(shí),這個(gè)端口號(hào)都不同。再次打開(kāi)“命令提示符”,輸入“netstat -a”,可以看到下面的C#服務(wù)端與客戶端連接實(shí)現(xiàn)實(shí)例輸出:

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

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

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

【編輯推薦】

  1. C#異步傳輸字符串服務(wù)端的實(shí)現(xiàn)
  2. C#異步傳輸字符串客戶端的實(shí)現(xiàn)
  3. C#網(wǎng)絡(luò)編程基本概念TCP淺析
  4. C#網(wǎng)絡(luò)聊天程序三大模式淺析
  5. C#服務(wù)端端口偵聽(tīng)淺析

當(dāng)前題目:C#服務(wù)端與客戶端連接實(shí)現(xiàn)淺析
本文來(lái)源:http://www.5511xx.com/article/ccsecjo.html