《物聯網系統設計與應用開發》課件6-3 任務3 面向連接的TCP同步Socket通信_第1頁
《物聯網系統設計與應用開發》課件6-3 任務3 面向連接的TCP同步Socket通信_第2頁
《物聯網系統設計與應用開發》課件6-3 任務3 面向連接的TCP同步Socket通信_第3頁
《物聯網系統設計與應用開發》課件6-3 任務3 面向連接的TCP同步Socket通信_第4頁
《物聯網系統設計與應用開發》課件6-3 任務3 面向連接的TCP同步Socket通信_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

任務實施服務器端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);//監聽Console.WriteLine("服務端開始監聽。。。。");SocketclientSocket=localSocket.Accept();//當有可用的客戶端連接嘗試時執行,并返回一個新的socket,用于與客戶端之間的通信byte[]bys=newbyte[1024];//存放服務端接收到客戶端的信息Console.WriteLine("客戶端已連接");clientSocket.Send(Encoding.Default.GetBytes("welcome"));//服務器端向客戶端發送消息"welcome"while(true){intrecv=clientSocket.Receive(bys);//Socket讀取數據if(recv==0)//當客戶端主動自愿斷開連接時recv=0break;Console.WriteLine(Encoding.Default.GetString(bys,0,recv));//輸出接收到客戶端的信息}clientSocket.Close();localSocket.Close();//關閉服務端}}}任務實施2)客戶端開發流程(1)創建SocketClient控制臺程序。(2)引入命名空間System.Net.Sockets。(3)根據圖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];/*存放服務器發送的數據*/intrecv=localSocket.Receive(bys);/*客戶端接收服務器數據*/stringstr=Encoding.Default.GetString(bys,0,recv);/*將服務器返回數據轉化成字符串*/Console.WriteLine(str);/*顯示服務器返回數據*/stringmsg;/*聲明存放用戶輸入的信息*/do{msg=Console.ReadLine();/*獲取輸入數據*/bys=Encoding.Default.GetBytes(msg);/*將字符串轉化成byte數組輸出*/localSocket.Send(bys);/*向服務器端發送數據*/}while(msg!="exit");/*當輸入exit自愿斷開連接*//*禁止下次數據讀取和寫入參數:SocketShutdown.Receive禁止下次數據讀取SocketShutdown.Send禁止下次數據寫入*/localSocket.Shutdown(SocketShutdown.Both);/*在關閉客戶端Socket*/localSocket.Close();}}}結果驗證分別啟動服務器端和客戶端程序,在客戶端輸入helloSever,按回車鍵,服務端中顯示客戶端所發送的消息,如圖6-13所示。圖6-13客戶端向服務端發送數據感謝觀看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevanthea

溫馨提示

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

最新文檔

評論

0/150

提交評論