代码编织梦想

这个问题的出现是在工作中发现的,客户端接收SIP请求时候发现字符串内容缺少。

原代码中有这么一段String sss = new String(b,"GBK");

怀疑是不是字节数组转字符串缺失。

经过测试发现不是。然后排查发现 默认netty udp接收DatagramPacket字节数最大是2048;

改成3600会报错。必须再改一个地方。

 

报错的原因就是读取的数据索引readerIndex超过writerIndex,解决办法就是在udp服务创建的时候,指定RCVBUF_ALLOCATOR

这个参数用于Channel分配接受Buffer的分配器,默认值为 AdaptiveRecvByteBufAllocator.DEFAULT,是一个自适应的接受缓冲区分配器,能根据接受到的数据自动调节大小。

可选值为 FixedRecvByteBufAllocator,固定大小的接受缓冲区分配器。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiangteddt/article/details/127991381

netty(二)tcp粘包、拆包和udp通信_宏微的博客-爱代码爱编程

Netty基本实现 Netty实现通信的步骤: 1. 创建两个NIO线程组,一个专门用于网络事件处理(接受客户端的连接),另一个则进行网络通信读写。 2. 创建一个ServerBootstrap对象,配置Netty的一

netty-读半包处理--bytetomessagedecoder_lij231的博客-爱代码爱编程

Netty作为网络应用框架,在网络上的各个应用之间不断进行数据交互。而网络数据交换的基本单位是字节,而java应用传输又是POJO,这就要序列化成字节再网络上传输。Netty是使用TCP/UDP在互联网上传输数据,由于Netty异步的特性,当使用TCP时,不可避免就会出现TCP粘包/拆包现象。对于TCP粘包/拆包,业界公开的有一下几种方法: 使用分隔符分

高性能io框架netty四 - 解决粘包/半包问题-爱代码爱编程

目录 前言:demo演示 执行结果 一、什么是TCP粘包半包? 二、TCP粘包/半包发生的原因 三、解决粘包半包问题 1、在包尾增加分割符 2、消息定长 3、将消息分为消息头和消息体 前言:demo演示 首先,我们来看个demo 1、EchoServer /** * 作者:DarkKing * 类说明: */ public

Netty接收报文长度问题-爱代码爱编程

对于netty的接收数据字节长度,之前资料上是写着最大1024字节,但是否有设置参数可以支持单条报文接收大于1024字节,还不清楚; 查了下可以设置: option(ChannelOption.SO_RCVBUF,1024*16).//设置接收缓冲区 option(ChannelOption.SO_SNDBUF,1024*16);//设置发送缓冲区

Java网络编程(10) - Netty网络编程常见问题与疑问-爱代码爱编程

Netty网络编程面试常见问题 Netty是什么?       Netty是由JBOSS提供的一个Java开源框架,Netty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持,可用于快速开发可维护的高性能协议服务器和客户端。 Netty是基于Java NIO的一个C/S网络应用框架,所有IO操作都是异步非阻塞的,通过Fu

netty udp接收超过2048字节数据-爱代码爱编程

    默认netty udp接收DatagramPacket字节数最大是2048,如果数据大,超过这个限制,就会报错,抛出异常,虽然这个包解析失败,不会影响其他包的解析,但是总得来说,这种失败是不利于数据收集的。     我们先来看看这个错误:     java.lang.IndexOutOfBoundsException: readerIndex(

Netty 应用-解决粘包/半包-爱代码爱编程

目录 基本使用1. 创建客户端handler2. 创建客户端3. 创建服务端handler4. 创建服务端5. 先启动服务端,再启动客户端粘包/半包问题1. 什么是TCP粘包半包2. TCP 粘包/半包发生的原因解决粘包半包问题1. 增加分割符回车换行符进行分割自定义分割符2. 消息定长代码下载地址 基本使用 1. 创建客户端handler

Netty解决粘包/半包问题(十)-爱代码爱编程

今天分享Netty解决粘包/半包问题,通常传输均存在这种问题,比如下面默认的代码: 一、存在粘包、半包问题的示例: 1、服务端代码: public class EchoServer { private final int port; public EchoServer(int port) {

netty之心跳机制-爱代码爱编程

目录 一、前言 二、netty的心跳工具 三、IdleStatehandler 1、构造方法 2、handlerAdded 3、定时任务 4、读事件空闲 5、写事件空闲 一、前言 心跳机制就是定时的给对端发送特殊的数据包 , 对端收到后回复特殊的数据包 , 这一次往返的ping-pong过程 , 就是一次心跳,心跳的目的是为了让双方

网络协议和Netty(7):常用的网络抓包工具 Wireshark-爱代码爱编程

目录 Wireshark的使用 1.下载 2.安装 数据包的捕获和基本用法 过滤器 捕获过滤器 捕获过滤器的 BPF 语法 显示过滤器 比较操作符和逻辑操作符 预定义过滤器  前言:前面三次握手和四次挥手用的抓包工具就是Wireshark,本节主要介绍其简单的使用,不用死记硬背,知道大概的使用方法就行,至于命令搞个专门记录命令的文档记

5 深入理解netty,网络篇,粗谈TCP和UDP协议-爱代码爱编程

概况  上篇文章简单描述了一下网络分层。这篇文章就分享一些TCP和UDP的一些内容,这篇文章会分享一些我觉得跟我们开发有直接关联的一些知识。文章内容分为两分部。  第一部分是 TCP的那些事  第二部分是 UDP的那些事 TCP的那些事  TCP的内容很复杂,这里只是概述性的讲解它的优缺点,并不会详细描述它的各种算法,策略等。  TCP是成熟可靠的协

Netty接收超过1024字节-爱代码爱编程

应用场景 使用 Netty 创建 TCP 服务器,和底层硬件进行TCP 交互,底层每次传输1026个字节。 问题描述及复现 但是Netty的TCP服务端接收数据时,第一包只能接收1024个字节,第二包接收2字节。于是猜测是不是 Netty 有什么配置,将字节缓冲区设置成了 1024。于是到百度上查,有的人说将ChannelOption.SO_BACK

netty(3)--粘包半包问题-爱代码爱编程

netty(3)–粘包半包问题 什么是 TCP 粘包半包? ​ 假设客户端分别发送了两个数据包 D1 和 D2 给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下 4 种情况。 服务端分两次读取到了两个独立的数据包,分别是 D1 和 D2,没有粘包和拆包; 服务端一次接收到了两个数据包,D1 和 D2 粘合在一起,被称为 TCP

netty_netty 第二次请求不响应-爱代码爱编程

OSI七层网络模型介绍 应用层:Http协议、电子文件传输、文件服务器等表示层:解决我们不同系统之间语法的通讯会话层:建立与应用程序之间的通讯传输层:提供了端口号和接口协议TPC/UDP网络层:为数据包选择路由 路由器、交

行业分析| 智慧消防对讲_可视对讲行业分析-爱代码爱编程

消防工程关系国计民生,关系到每个公民的人身和财产安全,在每个场所的建设中,消防工程建设是必不可少的一个板块,包括消防应急通道建设和应急设备建设两个方面。其中消防系统设备建设主要分为九大系统的建设:消防水系统、火灾自动报警系统