中亿物联网卡大讲堂:Socket物联接入使用详解

2018-10-08 3156来源:中亿物联网 分类: 物联网

  中亿物联网卡大讲堂:本文介绍了socket物联通信如何进行HTTP协议配置、字符串解析、接口定义与使用,更好的让物联网行业开发者了解Socket物联的原理和代码实现。


中亿物联网卡大讲堂:Socket物联接入使用详解


  一、需求

目前,讲解物联仅支持HTTP请求以及特定的灯控接口,相关文档《超级后台配置物联接口》以前在worktitle提交过。部分公司希望物联能够支持socket通信,通过socket通信控制设备开关实现物联,如讲解过程中正在讲解某个素材的时候可以控制视频的播放。

  二、实现步骤

  1、在超级后台讲解的素材中配置物联接口(格式下边介绍) 

  2、在讲解APP中,通过HTTP协议获得到配置好的物联接口,把该物联接口解析成我们可用的字符串 

  3、通过socket发送命令到服务端,完成通信。

  三、接口格式定义及使用

  1、物联接口格式定义:socket#协议#ip#端口号#命令

  socket:物联接口标识,表示该物联接口是socket协议的 

  协议:物联接口中socket协议,分为UDP、TCP 

  端口号:物联接口中socket所需的端口号 

  命令:物联接口中socket在客户端发送给服务端的具体命令

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

  2、使用:在讲解素材中的物联接口处直接填入以上格式的物联接口即可

  四、Socket通信原理及代码实现

  Socket通信是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。

  1、基于UDP协议的socket通信 

  直接操作UDP不可能,应该将UDP封装成对象DatagramSocket,封装了UDP传输协议的socket对象。因为数据包中包含的信息较多,为了操作这些信息方便,也一样会将其封装成对象DatagramPacket,通过这个对象中的方法,就可以获取到数据包中的各种信息。 

  DatagramSocket具备发送和接受功能,在进行udp传输时,需要明确一个是发送端,一个是接收端。

  下边的代码是发送端实例:


  public void sendDataByUDP() throws IOException {


    //1.定义服务器的地址、端口号、数据

 

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


    //InetAddress address_test=InetAddress.getLocalHost();


    int port = 8234;


    byte[] data = "北京云迹UDP测试".getBytes();


    //2.创建数据报,包含发送的数据信息


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


    //3.创建DatagramSocket对象


    DatagramSocket socket = new DatagramSocket();

 

   //4.向服务器端发送数据报


    socket.send(packet);


    //5.关闭socket


    socket.close();


}


  2、基于TCP协议的socket通信

  两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流。该流中既有读取,也有写入。

  tcp的两个端点: 

  客户端:对应的对象,Socket 

  服务端:对应的对象,ServerSocket

  public void sendData() throws Exception {

  //1、建立tcp的socket服务,最好明确具体的地址和端口。这个对象在创建时,就已经可以对指定ip和端口进行连接(三次握手)。

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

  //2、如果连接成功,就意味着通道建立了,socket流就已经产生了。只要获取到socket流中的读取流和写入流即可,只要通过getInputStream和getOutputStream就可以获取两个流对象。

  OutputStream outputStream = socket.getOutputStream();//获取了socket流中的输出流对象。

  outputStream.write("tcp协议通信".getBytes());

  //3、关闭资源。

  socket.close();


}

  中亿物联网,作为成熟的物联网解决方案提供商,提醒对投资物联卡代理、企业物联卡购买有兴趣的小伙伴在选择移动物联卡、电信物联卡、联通物联卡供应商的时候,一定要选择资质齐全,售前售后服务完善,物联卡管理平台稳定的物联网服务商。

  还有这些物联卡相关资讯您肯定想知道:关于物联卡如何续费?企业办理物联卡需要注意哪些事项!物联网卡的应用场景有哪些?请关注“物联无疆”公众号,回复关键词“物联卡”即可查看!