zoukankan      html  css  js  c++  java
  • 2018/3/10 手把手教你实现一个应用层协议

    身为一名程序员,怎么能不会自定义协议呢?

    大家都知道在网络传输当中,我们的TCP/IP协议是分为四层的,分别是应用层,传输层,网络层,链路层,而每一层的协议都有着各不相同职责。

    应用层:将数据报文按照一定格式组装,最典型的例子:http,ftp等协议

    传输层:将一个完整报文按照一定格式切割个几个小报文,典型代表:tcp,udp等协议

    网络层:负责数据报文在网络中传输的协议。典型:ip协议

    链路层:硬件相关

    今天我们来基于Netty实现一个自定义的应用层协议吧。

    首先,我们抓下包,看看http协议的报文格式

    这里面,可以看到http协议是分为了行,头,体三层,每一层都有多个字段,而每个字段都可以对应一个或者多个参数。所以我们只要仿照其实现自定义协议就行;

    首先,我们也来自定义一个请求头

    将请求头设置进具体的报文类

    之后我们还需要自定义一个编解码处理器,因为在网络传输中流是无法掌控的,就像水一样,只有设置分隔符,或者自定义协议才能做到区分,而自定义协议,则必须要自己实现与协议相匹配的的编解码器;

    编码器

    解码器

    之后自定义一个Netty处理类

    创建一个在管道初始化类,将我们的编解码器和处理器设置进去

    写一个客户端

    以及一个服务端

  • 相关阅读:
    js当地天气调用
    js 3D旋转效果
    js 格林威治时间转正常格式并兼容ios
    vue中使用百度地图,悬浮窗搜索功能
    js 百度地图定位
    高德地图坐标与百度地图坐标相互转换
    js高德地图手机定位
    数据循环处理重组2
    数据循环处理重组1
    百度地图搜索框在弹框中不显示
  • 原文地址:https://www.cnblogs.com/yangfeiORfeiyang/p/8541928.html
Copyright © 2011-2022 走看看