writeUTF输出字符串失败的原因分析

字符串比较长了之后,数据就发不过去了,经检查JDK的源代码,原来有长度限制。
为了保险起见,我们还是不要超过65535/3 我看取20000好了。

  1.     public final void writeUTF(String str) throws IOException {
  2.         writeUTF(str, this);
  3.     }
  4.   static int writeUTF(String str, DataOutput out) throws IOException {
  5.     int strlen = str.length();
  6.     int utflen = 0;
  7.     int c, count = 0;
  8.     /* use charAt instead of copying String to char array */
  9.     for (int i = 0; i < strlen; i++) {
  10.       c = str.charAt(i);
  11.       if ((c >= 0x0001) && (c <= 0x007F)) {
  12.         utflen++;
  13.       } else if (c > 0x07FF) {
  14.         utflen += 3;
  15.       } else {
  16.         utflen += 2;
  17.       }
  18.     }
  19.     if (utflen > 65535)
  20.       throw new UTFDataFormatException("encoded string too long: " + utflen + " bytes");
  21.     // 其他的语句
  22.   }











<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
Windows API Hook实战:Frida动态注入与MessageBox拦截 动态代码插桩技术是现代软件逆向分析与安全研究中的核心方法,它允许在不修改源代码的情况下,实时监控和修改程序行为。其原理是通过在目标进程内存中注入代码,拦截函数调用、读写内存或寄存器数据。这项技术的核心价值在于提供了对闭源软件的深度可观测性和可控性,广泛应用于漏洞挖掘、恶意软件分析、软件调试与功能扩展等场景。Frida作为当前最流行的动态插桩框架,以其跨平台特性和JavaScript API降低了技术门槛。本文以Windows平台为背景,深入讲解如何使用Frida对MessageBoxW等系统API进行Hoo 阅读详情

相关推荐

Keil-C51 与 Keil -ARM 共存的方法

本篇为《嵌入式相关》系列博客的第五篇,该系列博客主要记录单片机开发及硬件设计的相关过程,方便以后查阅。 Keil-C51 与 Keil -ARM 共存的方法状况解决方案1测试解决方案2 状况 今天装完Keil-C51,然后又换装了Keil-ARM之后,可以正常编译STM32 的工程,但是无法编译C51的工程,并且出现了如下错误: *** Error: Project ‘template’ requires ‘C51’ Toolchain which is not installe 这种情况就是Keil-

梁小憨憨的博客 1万+

关于DataOutputStream类的writeUTF的异常

对于字符串的发送,就是一个切分思想,先发头部,再发真正的数据。 我们既然把消息已经发过去了,那么也就需要完整的将数据接收过来分片发送,自然就要接收片段,将其整合到一起。

weixin_45483328的博客 1141

在Ubuntu 22.04上搞定CanFestival主站:从源码下载到SocketCAN配置的保姆级教程

本文提供在Ubuntu 22.04上配置CanFestival主站的详细教程,涵盖从源码下载、SocketCAN配置到实战测试的全过程。针对工业自动化领域的CANopen协议需求,介绍如何优化编译环境、解决常见问题,并通过虚拟CAN接口验证功能完整性。

weixin_29192365的博客 404

3 输入输出流 -- 学习笔记

c++输入输出流相关的知识,包括标准IO,文件IO,字符串IO,缓冲区等。

技术小白er的救赎之路 224

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5643

CentOS7环境下搭建 rsyslog 日志服务器,rsyslog+loganalyzer

1.系统环境部署 ip hostname 192.168.200.182 web 192.168.200.184 rsyslog-mysql 关闭防火墙、selinux、下载epel源 [root@web ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/f

sehn_的博客 3757

要小心java的OutputStream.writeUTF()函数。

        正在用JAVA写一段连接MSN服务器的代码,但是发现怎么给MSN服务器发送命令消息,结果都只有一个,那就是没有响应,随后Socket连接被关闭。        发送消息的代码如下:        public void send(String cmd)         {              try{                   DataOutputStream do

dengyunze 1万+

网表导入virtuoso后发现pg pin忘记connect_pg_net/globalNetConnect怎么办?

数模混合项目中经常需要一些需要到virtuoso去连接的线,比如IO上的pg和一些信号线,除了在pr工作中设置skip route之外还需要做好net的赋值,告诉工具虽然我没在物理上有连接,但是实际上应该连什么net,这部分提现在网表里。在Default Net Name中也填写net name,因为这个net需要做global操作,即在顶层定义这个net,所以需要在net name后加个!打开schematic,删除指定cell pin所接net的label。

m0_61544122的博客 972

socket 发送消息 DataOutputStream write vs writeUTF8 编码问题

<br />public void reboot(String host) throws SocketException {<br />  Socket socket = null;<br />  DataOutputStream dos = null;<br />   <br />   try {<br />    socket = new Socket(host, port);<br />    dos = new DataOutputStream(socket.getOutputStream());<

xiechunmei13的专栏 7205

Vue3 - 详细实现移动端H5网页调用摄像头拍照功能,微信公众号网页h5页面打开本地摄像头并点击按钮照相,vue3获取摄像头画面执行拍照保存,调整摄像头前置后置抓拍图片给用户展示或保存手机上传服务器

vue3,H5网页,手机移动端,vue3摄像头拍照,前端h5调用手机摄像头,移动端网页调用摄像头,H5实现手机拍照和选择上传,调用本地摄像头实现拍照,vue3调用摄像头拍照,手机浏览器开启摄像头并进行拍照,H5移动端网页中调用手机摄像头,H5实现web调用摄像头在线照相,vue3h5调用摄像头,微信公众号网页如何调用摄像头拍照,公众号H5页面实现打开摄像头照相,怎么生成临时图片,vue3项目调用摄像头实现拍照功能,摄像头打不开没反应,浏览器不兼容怎么办,摄像头权限不弹出,只能在本地运行,拒绝权限后怎么办,

🏆 前端领域优质创作者 1万+

YOLO+OpenCV强强联手:高精度跌倒检测技术实战解析

(0, 1), (0, 2), (1, 3), (2, 4), # 脖子和头部(3, 5), (5, 6), (5, 7), (7, 9), (5,11),# 左臂(4,6), (6, 12), (6,8) ,(8,10),# 右臂(11, 12), (11, 13), (13, 15), #左腿(12, 14), (14, 16) #右腿keypoints是检测到的人体关键点数据,frame是图像帧,boxes是检测到的边界框信息。定义了人体关键点之间的连接关系,用于绘制人体骨架。

yolo模型训练找我,AI游戏合作找我 2324

FSDataOutputStream.writeUTF(String)写入文本异常

在使用spark hadoop的文件写入流 FSDataOutputStream 写入字符串的时候出现了异常, 写入方法如下: protected void write2File(String line) throws Exception { line = line +"\n"; fsOut.writeUTF(line); } 查看hdfs上文本内容时出现异常

淡然坊 1907

RT-DETR的AIF模块+YOLOv8:融合注意力与特征交互,打造实时检测的科研级进阶方案

从理解AIF模块“细粒度注意力+跨尺度交互”的核心设计,到亲手将其嵌入YOLOv8并验证在复杂场景的表现,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解“注意力机制与CNN融合”在实时检测中的核心价值。现在就开始行动,相信你会在实时目标检测的“智能进化”之路上,走出一条属于自己的技术路径。从实验对比图可见,集成AIF模块的YOLOv8,其mAP(平均精度)在多个阈值下均有提升,尤其是mAP50-95(高IoU阈值下的精度)提升更为显著,充分证明了AIF对细粒度特征的捕捉能力。

m0_64661770的博客 191

97.FileWriter文件字符输出流

FileWriter文件字符输出流 【构造方法】 <1>FileWriter(String filePath);根据用户指定的路径,创建对应的FileWriter文件操作字符流对象;如果路径不合法,抛【异常】FileNotFoundException; 写入数据到文件的方式【删除写】!!!文件内容清空,再写入数据 <2>FileWriter(File file); 根据用户指定的File类对象,创建指定的FileWriter文件操作字符输出流对象,如果路径不合法,抛【异常】Fi

嘻哈怪才的博客 640

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

输入和输出处理(字符和序列化)-2

字符流 字符输入流 java.io.Reader InputStreamReader 将字节输入流转换为字符流 java.io.FileReader 构造方法: FileReader(String fileName) 根据文件路径构建字符输入流对象 FileReader(File file) 根据 File 对象构建字符输入流对象 常用方法: read():int 读取一个字符(内容) read(char[] cbuf):int 读取一个字符数组的内容,返回的是读取了多少个字符到字符数.

weixin_57488568的博客 206

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android 平台一个使用 FileIOStream 替代 RandomAccessFile.rwUTF 引发的 bad base-64 隐藏 BUG

文件由writeUTF()写入,带有 2 字节长度头;长度头的高位字节落在0x00-0x1F范围内(即文件总长 < 8192 字节),从而被 Base64 解码器视为SKIP跳过;被跳过的控制字符数量为奇数(本例中为 1 个字节);原始 Base64 密文包含padding(即原始明文长度不是 3 的倍数)。只有当这三个条件全部满足时,才会触发bad-base64异常。分析初期由于环境信息、文件内容及现象描述不够完整,导致 AI 与自身思路多次走入死胡同,耗费了大量时间。

tQ22NoyI8的博客 191

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

flash socket

flash 提供了与服务端SOCKET连接的API 其中有2个方法 readUTF() writeUTF() 解读下 readUTF()--> 服务端向 用户端发送数据 数据以字节发送 (字节-->8个2进制) flash读取服务端发送的数据 这个字节的编码为 utf-8编码 但要指定这个 utf-8编码的字节的长度 以2个字节 指定utf-8编码的长度...

weixin_30439131的博客 127

php读取utf-8文本文件源码

函数来确保正确的编码转换。你可以根据实际情况替换文件路径和内容,并在代码中调用这两个函数来实现读取和写入操作。函数用于将指定的内容写入UTF-8编码的文件中。在读取和写入过程中,使用了。函数用于读取UTF-8编码的文件内容,并返回其内容作为字符串。

chatgpt001的博客 588

ByteArray各方法详解

 这段时间在做socket, 当然就用到ByteArray了,O(∩_∩)O~, 写下ByteArray各方法含义. objectEncoding: 设置ByteArray读写Object是编码格式, 仅对writeObject,readObject这两个方法有用.endian:指示多字节数字的最高有效字节位于字节序列的最前面。 一般不用设置, 默认是Endian.BIG_ENDIAN.b

ityuany 6351

C++项目ASCII转UTF-8编码实战:从原理到系统级改造

字符编码是软件国际化和跨平台开发的基础技术概念,它定义了计算机如何将字符映射为二进制数据。ASCII作为早期标准仅支持128个英文字符,而UTF-8采用可变长编码设计,完美兼容ASCII的同时支持全球所有Unicode字符。理解编码原理对处理多语言数据交换、文件存储和网络传输具有重要技术价值,特别是在操作系统、编译器和第三方库编码行为不一致的工程场景中。本文聚焦C++项目改造场景,针对std::string的编码盲特性、编译器源文件编码配置、跨平台文件系统交互等实际问题,提供从纯ASCII验证、GBK到UT

weixin_34050519的博客 416

Frida反调试绕过实战:五种常见检测机制分析与脚本实现

在移动安全与逆向工程领域,动态分析是理解应用行为的关键技术。其核心原理是通过注入代码或调试器,实时监控和修改目标应用的运行时状态,从而揭示其内部逻辑、数据流及潜在漏洞。这项技术的价值在于能够穿透代码混淆和加密,为安全评估、漏洞挖掘和恶意软件分析提供动态视角。典型的应用场景包括安卓应用安全测试、协议分析和软件保护机制研究。本文聚焦于使用Frida框架进行动态分析时,如何应对App设置的反调试防护,特别是针对端口检测、进程文件扫描等常见机制,提供了完整的绕过脚本和实战心得,帮助开发者有效绕过检测,顺利开展分析工

weixin_33725270的博客 362
上一篇: 【转】秋季吃点“五仁”:滋养肝肾 润燥滑肠
下一篇: session与cookie的区别
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值