netty练习

简介: netty练习

网络上有多条数据发送给服务端,数据之间使用 \n 进行分隔 但由于某种原因这些数据在接收时,被进行了重新组合,例如原始数据有3条为

  • Hello,world\n
  • I'm zhangsan\n
  • How are you?\n

变成了下面的两个 byteBuffer (黏包,半包)

  • Hello,world\nI'm zhangsan\nHo
  • w are you?\n

现在要求你编写程序,将错乱的数据恢复成原始的按 \n 分隔的数据

public static void main(String[] args) { ByteBuffer source = ByteBuffer.allocate(32); //                     11            24 source.put("Hello,world\nI'm zhangsan\nHo".getBytes()); split(source);

source.put("w are you?\nhaha!\n".getBytes());
split(source);

}

private static void split(ByteBuffer source) { source.flip(); int oldLimit = source.limit(); for (int i = 0; i < oldLimit; i++) { if (source.get(i) == '\n') { System.out.println(i); ByteBuffer target = ByteBuffer.allocate(i + 1 - source.position()); // 0 ~ limit source.limit(i + 1); target.put(source); // 从source 读,向 target 写 debugAll(target); source.limit(oldLimit); } } source.compact(); }



目录
相关文章
|
8月前
netty
netty
46 0
|
6天前
|
存储 Java API
Netty指南
Netty指南
40 2
|
6天前
|
监控 前端开发 Java
Netty使用篇
Netty使用篇
|
6月前
|
安全 Java Linux
Netty4 使用总结
Netty4 使用总结
33 0
|
9月前
|
消息中间件 网络协议 Dubbo
Netty是什么,为什么要使用Netty?
最近,也不知道什么原因,经常有粉丝问我关于Netty的问题。难道是大厂面试更卷了,开始关注更加底层的框架了?先不深究什么原因了,今天,我给大家分享一下什么是Netty,它能解决什么问题?
48 0
|
JSON 移动开发 网络协议
Netty应用篇
Netty应用篇
65 0
|
设计模式 安全 Java
Netty是什么?怎么学?
Netty是什么?怎么学?
139 0
|
消息中间件 分布式计算 网络协议
Netty之初识
Netty之初识
90 0
|
消息中间件 机器学习/深度学习 存储
Netty的使用
一个好的通信框架是怎样的?同时如何使用netty? 一个好的通信框架,必然是支持双工通信的,同时它能够对半包黏包进行处理,方便高效的编解码、序列化,拥有心跳超时机制,同时支持大量连接并发,方便调用。而这个通信的过程,我始终是觉得它的起源是三次握手和四次挥手。它们影响着消息中间件和通信框架以及SOA框架的发展。netty最简单的是它的EchoServer和EchoClient,两者有同时有自己对应的处理器EchoServerHandler、EchoClientHandler。
121 0
Netty的使用
|
消息中间件 分布式计算 网络协议
初识Netty
Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是一个NIO客户端服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化了TCP和UDP套接字服务器等网络编程
388 0