netty发送接收16进制代码_服务端netty,如何给指定客户端(非netty)发送指令?

Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。而TCP/IP是通用的标准通信协议,所有基于此协议的两端(服务端和客服端)都是可以进行通信的,所以,无论是否用netty实现客服端、服务端,两端都是可以进行通讯的,这个你再认真了解一下相关概念就明白了。好的,你文中提到要用netty实现服务端,和硬件客服端进行通信,这是现在很常见的应用场景,比如,用远程查看车辆的位置,实现就是车辆安装了GPS定位器,有GPS定位器通过sim卡的gprs网络跟你的服务器进行(TCP/IP SOCKET)通,发送了当前的gps坐标,因此你能够实时的掉车辆的位置。那这个服务器端就可以用netty开发实现一个socket服务器,而GPS车载终端由计算能力有限(节约成本)单片机实现,根本没有必要运行JVM,所以也不可能用netty去实现客服端,同样的,大多数的智能终端都不会有JVM。所以,终端和netty服务端只要建立tcp连接,就可以进行数据通信,这里,就讲到你的问题的重点了,TCP负责实现通信,你要做的就是,你自己定义“编码协议”(一组服务端客户端能够识别的编码命令定义),通常,客户端和服务端进行16进制的字节流数据交互,你只要定义要这个字节流编码协议就行了,比如,“编码协议”定义:0x01表示关机,服务端发送一个0x01给你的硬件客户端,你的硬件客服端接收,发现是0x01,随后进行关机,这样,就实现了远程关机命令了。当然实际应用中,不会有这么短的指令,这就是你要定义的编码协议,如一条比较完整的远程命令会有命令头+命令识别ID+命令内容+校验码+命令尾组成,有时还要在末尾加换行符:例如:7e000112d5dd7e;

所以,你的问题的简答是:netty实现的服务端发送给非netty实现的客户端指令是完全可以实现的,只要是你要定义好两端的通讯编码协议和进行正确的协议解析处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值