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(); }



目录
相关文章
netty
netty
64 0
|
2月前
|
设计模式 网络协议 NoSQL
netty(四)
netty(四)
|
3月前
|
网络协议 前端开发 安全
Netty
Netty
165 1
|
2月前
|
机器学习/深度学习 分布式计算 搜索推荐
Netty(一)
Netty(一)
|
5月前
|
消息中间件 编解码 Java
Netty介绍
Netty介绍
53 4
Netty介绍
|
6月前
|
存储 安全 Java
为什么Netty要造FastThreadLocal?
Netty 的 FastThreadLocal 是一种高效的线程局部变量,设计用于解决标准 ThreadLocal 的性能和内存泄漏问题。FastThreadLocal 通过使用数组而非哈希表存储数据,避免了哈希冲突带来的性能损耗,查询效率达到 O(1)。此外,FastThreadLocal 提供了 remove() 方法和 FastThreadLocalRunnable 类,以防止内存泄漏,确保在执行完成后自动清理对象。相比于 ThreadLocal,FastThreadLocal 具有更高的性能和安全性。
|
6月前
|
存储 Java API
Netty指南
Netty指南
75 2
|
6月前
|
设计模式 网络协议 Java
Netty | 一起来了解了解Netty吧
Netty | 一起来了解了解Netty吧
67 0
|
6月前
|
监控 前端开发 Java
Netty使用篇
Netty使用篇
|
安全 Java Linux
Netty4 使用总结
Netty4 使用总结
54 0