《 物聯(lián)網(wǎng)集成系統(tǒng)設計 》 課件 9服務器部分_第1頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設計 》 課件 9服務器部分_第2頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設計 》 課件 9服務器部分_第3頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設計 》 課件 9服務器部分_第4頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設計 》 課件 9服務器部分_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

物聯(lián)網(wǎng)應用系統(tǒng)設計智能家居項目單片機LED應用服務程序網(wǎng)關程序運程控制LED燈的項目智能家居項目添加標題服務器程序基于服務器的作用,分析服務器的功能有:(1)通過TCP協(xié)議接收網(wǎng)關轉(zhuǎn)發(fā)的LED燈狀態(tài)信息。(2)通過TCP協(xié)議發(fā)送控制信息到網(wǎng)關,經(jīng)網(wǎng)關轉(zhuǎn)發(fā)下行。(3)能通過瀏覽器輸入,發(fā)送控制信息。(4)能通過瀏覽器查看歷史狀態(tài)信息和控制信息。(5)有數(shù)據(jù)存儲的功能,能保存上傳的LED燈狀態(tài)信息和下發(fā)的控制信息。服務器功能2通過Java語言操作數(shù)據(jù)庫記錄數(shù)據(jù)通過URL地址發(fā)送、顯示數(shù)據(jù)教學目標實現(xiàn)服務器功能1服務器Socket接收3添加標題難點服務器的接收數(shù)據(jù)記錄到數(shù)據(jù)庫重點Socket接收和發(fā)送Socket接收和發(fā)送服務器Socket接收和發(fā)送

01網(wǎng)關作為Socket服務端連接(1)創(chuàng)建SocketServerServerSocketserverSocket=newServerSocket(1002);(2)accept()等待接收請求(3)創(chuàng)建連接Socket服務Socketserver=serverSocket.accept();

網(wǎng)關作為Socket客戶端連接(1)創(chuàng)建Socket服務,請求連接Socketclient=newSocket("192.168.1.136",1002);網(wǎng)關作為服務端/客戶端接收數(shù)據(jù)InputStreaminFromServer=client.getInputStream();intn=inFromServer.available(); inFromServer.read(res);網(wǎng)關作為服務端/客戶端發(fā)送數(shù)據(jù)OutputStreamoutToServer=client.getOutputStream(); outToServer.write(data.getBytes());服務器的Socket接收發(fā)送功能

為gs-mysql-service-main這個實例增加Scoket客戶端的功能,使它能夠連接網(wǎng)關上的Scoket服務端,達到與之通信的目的。

在工程包中新建一個java類GreetingClient.java,用于處理Socket的通信問題。通過Java語言操作數(shù)據(jù)庫記錄數(shù)據(jù)02通過java操作數(shù)據(jù)庫java程序操作數(shù)據(jù)庫增、刪、改、查把Socket客戶端接收到的數(shù)據(jù)存儲到數(shù)據(jù)庫。通過java操作數(shù)據(jù)庫

添加一個實體類LEDData,它會在程序連接的數(shù)據(jù)庫中生成一個數(shù)據(jù)表LEDData,里面有三個屬性,分別是id、data、datetiem。分別存放記錄id號、接收到的數(shù)據(jù)、接收數(shù)據(jù)的時間。UserRepository接口是提供操作LEDData表的方法,代碼如下:通過java操作數(shù)據(jù)庫publicinterfaceUserRepositoryextendsCrudRepository<LEDData,Integer>{

}通過java操作數(shù)據(jù)庫Socket通信接收到數(shù)據(jù)后,使用對象的setData和setDatetime的方法保存對象ledData的屬性data和datetime的值,最后使用save方法,把ledData屬性的值保存到數(shù)據(jù)庫表的字段中。接收數(shù)據(jù)并儲存運行效果通過URL地址發(fā)送、顯示數(shù)據(jù)03發(fā)送控制信息

在GreetingClient類中DataOutputStreamout是私有屬性,包內(nèi)其它類不能調(diào)用該屬性。要有一個公有的方法,獲得DataOutputStreamout這一個輸出流。public

OutputStreamgetOut(){

return

out;

}通過URL地址發(fā)送信息訪問URL地址Socket發(fā)送信息webjava參數(shù)傳遞@RestController注解放到控制器類上。

@GetMapping("/greeting")注解函數(shù)運行的請求。@RequestParam注解將請求參數(shù)綁定到控制器的方法參數(shù)上。

@GetMapping("/greeting") publicGreetinggreeting(@RequestParam

Stringname){

returnname; }通過URL地址發(fā)送信息

在MainController這一個控制器類中編寫一個函數(shù),使之映射到URL上,通過訪問URL鏈接運行函數(shù)。該函數(shù)實現(xiàn)的功能是,使用客戶端GreetingClient類的輸出流OutputStreamout把URL鏈接中輸入的開關燈信息發(fā)送到服務端。

@GetMapping(path="/controlLED")

public

@ResponseBody

StringcontrolLED

(@RequestParam

StringLED){

try

{

greetingClient.getOut().write(LED.getBytes());

return

"發(fā)送成功";

}catch

(IOExceptione){

//TODO

Auto-generatedcatchblock

e.printStackTrace();

}

return

"發(fā)送不成功";

}通過URL地址發(fā)送信息通過URL地址查看記錄

在MainController控制器類中編寫一個函數(shù),使之映射到URL上。通過瀏覽器輸入URL地址,運行函數(shù),直接返回數(shù)據(jù)庫的記錄到頁面。編寫函數(shù)前,先在MainController類中使用@Autowired注入LEDDataRepository對象。@GetMapping(path="/findAll")

public

@ResponseBody

Iterable<LEDData>getAll(){

//ThisreturnsaJSONorXMLwiththeusers

retur

溫馨提示

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

評論

0/150

提交評論