蓝色天空

走在IT的路上,随时需要抬头看看天空
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

netty拆包粘包

Posted on 2017-11-14 22:21  my_house_station  阅读(230)  评论(0编辑  收藏  举报

客户端

tcp udp    

socket网络编程接口

http/webservice mqtt/xmpp 自定义RPC (dubbo)

应用层 

服务端

 ServerSocket ss = new serverSocket(8088)

final Socket sc = ss.accept();

socket.getOutputStream();

String requestBody="i+1";

outputStream.write(requestBody.getBytes());

socket.close();

用网络编程框架 netty 三层架构  网络层(nio处理socket) 、职责链(调度)、 应用层(编解码)、业务代码

 tomcat也是三层架构  网络层(connector nio /bio实现)、适配层、servlet容器、 业务处理servlet  (httprequest httpresponse)

 netty 怎么写

channelPiepeline p = 

p.bind(8080)

 收到数据

自定义rpc dubbo 单一长连接立   建立一个连接后不会立马断开  i+1 i+1 i+1 正常的一个包  分包拆包  

短连接  http请求响应模型 一个请求一个响应 一次响应 连接池 tcp握手  i+1 响应  OK 完整断开连接 

 拆包 完整的数据分成多个网络包

粘包  两个不想干的数据合成一个包

操作系统和硬件 

A系统调用B系统调用不同的参数需要做区分

加入解码器  p.addlast(new XDecoder())

decode()