AV免费观看欧美一区日韩精品_国产男女免费视频在线观看_一区二区三区免费在线视频_永久免费的AV网无码播放_AV不卡一区二区三区

中億物聯(lián)網(wǎng)卡大講堂:Socket物聯(lián)接入使用詳解

2018-10-08 3367來(lái)源:中億物聯(lián)網(wǎng) 分類: 物聯(lián)網(wǎng)

  中億物聯(lián)網(wǎng)卡大講堂:本文介紹了socket物聯(lián)通信如何進(jìn)行HTTP協(xié)議配置、字符串解析、接口定義與使用,更好的讓物聯(lián)網(wǎng)行業(yè)開(kāi)發(fā)者了解Socket物聯(lián)的原理和代碼實(shí)現(xiàn)。


中億物聯(lián)網(wǎng)卡大講堂:Socket物聯(lián)接入使用詳解


  一、需求

目前,講解物聯(lián)僅支持HTTP請(qǐng)求以及特定的燈控接口,相關(guān)文檔《超級(jí)后臺(tái)配置物聯(lián)接口》以前在worktitle提交過(guò)。部分公司希望物聯(lián)能夠支持socket通信,通過(guò)socket通信控制設(shè)備開(kāi)關(guān)實(shí)現(xiàn)物聯(lián),如講解過(guò)程中正在講解某個(gè)素材的時(shí)候可以控制視頻的播放。

  二、實(shí)現(xiàn)步驟

  1、在超級(jí)后臺(tái)講解的素材中配置物聯(lián)接口(格式下邊介紹) 

  2、在講解APP中,通過(guò)HTTP協(xié)議獲得到配置好的物聯(lián)接口,把該物聯(lián)接口解析成我們可用的字符串 

  3、通過(guò)socket發(fā)送命令到服務(wù)端,完成通信。

  三、接口格式定義及使用

  1、物聯(lián)接口格式定義:socket#協(xié)議#ip#端口號(hào)#命令

  socket:物聯(lián)接口標(biāo)識(shí),表示該物聯(lián)接口是socket協(xié)議的 

  協(xié)議:物聯(lián)接口中socket協(xié)議,分為UDP、TCP 

  端口號(hào):物聯(lián)接口中socket所需的端口號(hào) 

  命令:物聯(lián)接口中socket在客戶端發(fā)送給服務(wù)端的具體命令

  示例:socket#tcp#192.168.1.180#15000#1B43DD0D0A6C0080

  2、使用:在講解素材中的物聯(lián)接口處直接填入以上格式的物聯(lián)接口即可

  四、Socket通信原理及代碼實(shí)現(xiàn)

  Socket通信是為網(wǎng)絡(luò)服務(wù)提供的一種機(jī)制,通信的兩端都有Socket,網(wǎng)絡(luò)通信其實(shí)就是Socket間的通信,數(shù)據(jù)在兩個(gè)Socket間通過(guò)IO傳輸。

  1、基于UDP協(xié)議的socket通信 

  直接操作UDP不可能,應(yīng)該將UDP封裝成對(duì)象DatagramSocket,封裝了UDP傳輸協(xié)議的socket對(duì)象。因?yàn)閿?shù)據(jù)包中包含的信息較多,為了操作這些信息方便,也一樣會(huì)將其封裝成對(duì)象DatagramPacket,通過(guò)這個(gè)對(duì)象中的方法,就可以獲取到數(shù)據(jù)包中的各種信息。 

  DatagramSocket具備發(fā)送和接受功能,在進(jìn)行udp傳輸時(shí),需要明確一個(gè)是發(fā)送端,一個(gè)是接收端。

  下邊的代碼是發(fā)送端實(shí)例:


  public void sendDataByUDP() throws IOException {


    //1.定義服務(wù)器的地址、端口號(hào)、數(shù)據(jù)

 

   InetAddress address = InetAddress.getByName("192.168.1.253");


    //InetAddress address_test=InetAddress.getLocalHost();


    int port = 8234;


    byte[] data = "北京云跡UDP測(cè)試".getBytes();


    //2.創(chuàng)建數(shù)據(jù)報(bào),包含發(fā)送的數(shù)據(jù)信息


    DatagramPacket packet = new DatagramPacket(data, data.length, address, port);


    //3.創(chuàng)建DatagramSocket對(duì)象


    DatagramSocket socket = new DatagramSocket();

 

   //4.向服務(wù)器端發(fā)送數(shù)據(jù)報(bào)


    socket.send(packet);


    //5.關(guān)閉socket


    socket.close();


}


  2、基于TCP協(xié)議的socket通信

  兩個(gè)端點(diǎn)的建立連接后會(huì)有一個(gè)傳輸數(shù)據(jù)的通道,這通道稱為流,而且是建立在網(wǎng)絡(luò)基礎(chǔ)上的流,稱之為socket流。該流中既有讀取,也有寫(xiě)入。

  tcp的兩個(gè)端點(diǎn): 

  客戶端:對(duì)應(yīng)的對(duì)象,Socket 

  服務(wù)端:對(duì)應(yīng)的對(duì)象,ServerSocket

  public void sendData() throws Exception {

  //1、建立tcp的socket服務(wù),最好明確具體的地址和端口。這個(gè)對(duì)象在創(chuàng)建時(shí),就已經(jīng)可以對(duì)指定ip和端口進(jìn)行連接(三次握手)。

  Socket socket = new Socket("10.1.31.69", 10002);

  //2、如果連接成功,就意味著通道建立了,socket流就已經(jīng)產(chǎn)生了。只要獲取到socket流中的讀取流和寫(xiě)入流即可,只要通過(guò)getInputStream和getOutputStream就可以獲取兩個(gè)流對(duì)象。

  OutputStream outputStream = socket.getOutputStream();//獲取了socket流中的輸出流對(duì)象。

  outputStream.write("tcp協(xié)議通信".getBytes());

  //3、關(guān)閉資源。

  socket.close();


}

  中億物聯(lián)網(wǎng),作為成熟的物聯(lián)網(wǎng)解決方案提供商,提醒對(duì)投資物聯(lián)卡代理、企業(yè)物聯(lián)卡購(gòu)買(mǎi)有興趣的小伙伴在選擇移動(dòng)物聯(lián)卡、電信物聯(lián)卡、聯(lián)通物聯(lián)卡供應(yīng)商的時(shí)候,一定要選擇資質(zhì)齊全,售前售后服務(wù)完善,物聯(lián)卡管理平臺(tái)穩(wěn)定的物聯(lián)網(wǎng)服務(wù)商。

  還有這些物聯(lián)卡相關(guān)資訊您肯定想知道:關(guān)于物聯(lián)卡如何續(xù)費(fèi)?企業(yè)辦理物聯(lián)卡需要注意哪些事項(xiàng)!物聯(lián)網(wǎng)卡的應(yīng)用場(chǎng)景有哪些?請(qǐng)關(guān)注“物聯(lián)無(wú)疆”公眾號(hào),回復(fù)關(guān)鍵詞“物聯(lián)卡”即可查看!