socket通信 一次传输的数据量超过66366 引发的UTFDataFormatException
//this.dout = new DataOutputStream(socket.getOutputStream());
String sc= "数据量超过66366的中文字";
dout.writeUTF(sc);
抛出异常:如何解决
java.io.UTFDataFormatException: encoded string too long: 74345 bytes
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你这个报错是DataOutputStream的writeUTF方法的限制,你看看源码就知道了,代码中有限制不允许超过65535长度。
哈哈,自己结贴吧,写个包装类实现了。虽然中文字是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();
糊涂了,应该是dataoutputstream.writeutf ()参数字窜太长的问题,求指点
亲,你能不能说点有内容的啊
那就别一次发那么大的数据阿。。