《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件6-3 任務3 面向連接的TCP同步Socket通信_第1頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件6-3 任務3 面向連接的TCP同步Socket通信_第2頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件6-3 任務3 面向連接的TCP同步Socket通信_第3頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件6-3 任務3 面向連接的TCP同步Socket通信_第4頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件6-3 任務3 面向連接的TCP同步Socket通信_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

目錄任務目標01相關知識點02任務實施03任務目標(1)了解TCP協(xié)議的特點。(2)理解套接字工作原理。(3)會建立面向連接的Socket(TCP方式)通信方式。相關知識1、Socket簡介(1)Socket的英文原義是“孔”或“插座”。作為通信機制,Socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄,用來實現(xiàn)不同虛擬機或不同計算機之間的通信。網(wǎng)絡上的兩個計算機(或程序)通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。(2)Socket是支持TCP/IP協(xié)議的網(wǎng)絡通信的基本操作單元,它是網(wǎng)絡通信過程中端點的抽象表示,包含進行網(wǎng)絡通信必須的五種信息:連接使用的協(xié)議、本地主機的IP地址、本地進程的協(xié)議端口、遠地主機的IP地址和遠地進程的協(xié)議端口。(3)在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。相關知識2、Socket通信流程使用Socket通信流程如圖6-12所示。首先建立一個套接字,并綁定本機的IP和端口作為服務器端,使用Listen()方法來監(jiān)聽網(wǎng)絡上是否有客戶端給服務器端發(fā)送數(shù)據(jù)。然后建立客戶端套接字連接服務器端。服務端監(jiān)聽到客戶端連接請求,使用accept來接收這個連接,最后就可以利用Send/Receive來執(zhí)行操作了。相關知識圖6-12Socket通信流程圖相關知識任務實施1.開發(fā)內(nèi)容本任務實現(xiàn)服務器端和客戶端的通信,程序設計包括服務器端和客戶端兩個方面。1)服務器端開發(fā)流程(1)創(chuàng)建SocketSever控制臺程序。(2)引入命名空間System.Net.Sockets。(3)根據(jù)圖6-12給出的服務器端系統(tǒng)通信流程編寫代碼。服務器端參考代碼如下:

任務實施服務器端privatevoidbutton1_Click(objectsender,EventArgse)namespaceSocketSever{classProgram{staticvoidMain(string[]args){SocketlocalSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//建立服務器端SocketIPEndPointiep=newIPEndPoint(IPAddress.Parse(""),1000);//服務器端IP端口1000localSocket.Bind(iep);//綁定本機的IP和端口localSocket.Listen(10);//監(jiān)聽Console.WriteLine("服務端開始監(jiān)聽。。。。");SocketclientSocket=localSocket.Accept();//當有可用的客戶端連接嘗試時執(zhí)行,并返回一個新的socket,用于與客戶端之間的通信byte[]bys=newbyte[1024];//存放服務端接收到客戶端的信息Console.WriteLine("客戶端已連接");clientSocket.Send(Encoding.Default.GetBytes("welcome"));//服務器端向客戶端發(fā)送消息"welcome"while(true){intrecv=clientSocket.Receive(bys);//Socket讀取數(shù)據(jù)if(recv==0)//當客戶端主動自愿斷開連接時recv=0break;Console.WriteLine(Encoding.Default.GetString(bys,0,recv));//輸出接收到客戶端的信息}clientSocket.Close();localSocket.Close();//關閉服務端}}}任務實施2)客戶端開發(fā)流程(1)創(chuàng)建SocketClient控制臺程序。(2)引入命名空間System.Net.Sockets。(3)根據(jù)圖6-12給出的客戶端流程圖編寫代碼。客戶端參考代碼如下:

任務實施客戶端

/*同步TCP通信客戶端*/namespaceSocketClient{classProgram{staticvoidMain(string[]args){IPAddressremoteHost=IPAddress.Parse("");//建立一個套接字IPEndPointiep=newIPEndPoint(remoteHost,1000);/*服務器地址與端口*/SocketlocalSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);/*客戶端Socket*/localSocket.Connect(iep);/*連接服務器端*/byte[]bys=newbyte[1024];/*存放服務器發(fā)送的數(shù)據(jù)*/intrecv=localSocket.Receive(bys);/*客戶端接收服務器數(shù)據(jù)*/stringstr=Encoding.Default.GetString(bys,0,recv);/*將服務器返回數(shù)據(jù)轉(zhuǎn)化成字符串*/Console.WriteLine(str);/*顯示服務器返回數(shù)據(jù)*/stringmsg;/*聲明存放用戶輸入的信息*/do{msg=Console.ReadLine();/*獲取輸入數(shù)據(jù)*/bys=Encoding.Default.GetBytes(msg);/*將字符串轉(zhuǎn)化成byte數(shù)組輸出*/localSocket.Send(bys);/*向服務器端發(fā)送數(shù)據(jù)*/}while(msg!="exit");/*當輸入exit自愿斷開連接*//*禁止下次數(shù)據(jù)讀取和寫入?yún)?shù):SocketShutdown.Receive禁止下次數(shù)據(jù)讀取SocketShutdown.Send禁止下次數(shù)據(jù)寫入*/localSocket.Shutdown(SocketShutdown.Both);/*在關閉客戶端Socket*/localSocket.Close();}}}結(jié)果驗證分別啟動服務器端和客戶端程序,在客戶端輸入helloSever,按回車鍵,服務端中顯示客戶端所發(fā)送的消息,如圖6-13所示。圖6-13客戶端向服務端發(fā)送數(shù)據(jù)感謝觀看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevanthea

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論