socket通信 一次传输的数据量超过66366 引发的UTFDataFormatException

发布于 2021-11-30 19:03:14 字数 256 浏览 1007 评论 5

//this.dout = new DataOutputStream(socket.getOutputStream());

String sc=  "数据量超过66366的中文字";

  dout.writeUTF(sc); 

抛出异常:如何解决

java.io.UTFDataFormatException: encoded string too long: 74345 bytes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

醉生梦死 2021-12-03 18:45:02

你这个报错是DataOutputStream的writeUTF方法的限制,你看看源码就知道了,代码中有限制不允许超过65535长度。

偏爱自由 2021-12-03 11:46:24

哈哈,自己结贴吧,写个包装类实现了。虽然中文字是2个或3个sc.length但是应该差不多不会超过。

if(sc.length()>40000){
     for (int i = 1; i < sc.length()/40000+2; i++) {
      dout.writeUTF(sc.substring(40000*(i-1),40000*i<sc.length()?40000*i:sc.length())); 
     }
    }else{
     dout.writeUTF(sc);
    }
    dout.flush();

少女净妖师 2021-12-03 03:58:46

糊涂了,应该是dataoutputstream.writeutf ()参数字窜太长的问题,求指点

你曾走过我的故事 2021-12-03 00:36:52

亲,你能不能说点有内容的啊

多彩岁月 2021-12-01 20:26:18

那就别一次发那么大的数据阿。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文