- 浏览: 160431 次
- 性别:
- 来自: 西安
文章分类
最新评论
Socket接收数据的时候,常常会抛出java.io.EOFException异常,也没有明确的原因和提示,在网上搜搜,很多人都在问此问题,但是没有找到切实可行的办法。经过研究,问题解决了。
看到的异常堆栈信息如下:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at java.io.DataInputStream.readUTF(DataInputStream.java:565)
at java.io.DataInputStream.readUTF(DataInputStream.java:522)
Java对此的解释也很模糊:
public class EOFExceptionextends IOException当输入过程中意外到达文件或流的末尾时,抛出此异常。
此异常主要被数据输入流用来表明到达流的末尾。注意,其他许多输入操作返回一个特殊值表示到达流的末尾,而不是抛出异常。
从上面的提示可以模糊看到,因为不知道流的末尾,当到达末尾的时候,自然抛出了此异常。既然不知道结尾如何,干脆设一个缓存,然后读取一批数据后输出即可。
为了保险期间,可以讲此缓存设置大点,一次可以完全接收到想要的内容,这样,一次就可以读取到所要的内容了,避免了循环获取。下面将此代码放出来:
......
private static final int BUFFER_SIZE=1024*1024;
......
Socket socket = new Socket(cfg.getIp(), Integer.parseInt(SysParamsToolkit.getProperty("socketport")));
String charset = SysParamsToolkit.getProperty("socke.rexml.charset"); //Socket发送的字符集编码
try {
OutputStream dos = socket.getOutputStream();
dos.write(xmlcmd.getBytes(charset));
dos.flush();
DataInputStream dis = new DataInputStream(socket.getInputStream());
char[] data = new char[BUFFER_SIZE];
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), charset));
int len = br.read(data);
String rexml = String.valueOf(data, 0, len); //接收一个字符串数据
} catch (Exception e) {
return false;
} finally {
if (socket.isConnected())
socket.close();
}
......
经过上面的处理后,就没问题了。
缓存的大小BUFFER_SIZE是根据你要接收内容的大小来确定。
发表评论
-
回调hanshu
2018-10-15 23:09 0java callback -
根据类名查找jar包路径
2018-08-12 01:04 912ProtectionDomain pd = StringUt ... -
https
2018-04-20 23:14 01:导出证书用IE的证书工具可以将网站的证书导出。打开网 ... -
mock request
2017-08-20 02:56 0一:postprotected ApplicationCont ... -
使用mockMvc测试文件上传
2017-08-20 01:52 6355@Autowired BanksController bank ... -
java 线程池实现多并发队列后进先出
2017-02-15 00:33 1840java实现线程池多并发队列后进先出 目前默认的队列都是先 ... -
apache ftp server
2017-01-11 22:41 614apache ftp server -
证书制作工具
2016-06-29 23:28 689证书制作工具 -
spring mvc 初始化加载bean
2016-06-15 20:28 1373<context:component-scan bas ... -
Ribbon 和 Eureka 的集成
2016-06-11 00:42 2875Ribbon 是 Netflix 发布的云中间层服务开源项目 ... -
RestTemplate实践
2016-06-11 00:30 941什么是RestTemplate? RestTemplat ... -
@Component(“”)和@resource(name=””)的使用:
2016-06-08 01:24 12252@Component(“”)和@resource(nam ... -
springboot ant部署
2016-06-08 01:03 966springboot ant部署 -
springboot 使用外部tomcat启动
2016-06-05 22:59 1548package sample.xml; import o ... -
swagger 实现文件上传
2016-06-01 22:23 5675@ResponseBody @RequestMa ... -
swagger
2016-06-01 21:18 0import static springfox.docum ... -
java
2016-05-26 01:14 0swagger2.0 -
swagger
2016-05-26 00:32 0spring swagger -
java 域名解析
2016-05-18 23:18 467import java.net.InetAddress;im ... -
swing 模拟文件上传
2016-05-15 17:32 500swing 模拟文件上传
相关推荐
在本文中,我们将深入探讨如何将RabbitMQ与SpringBoot集成,以实现高效的消息队列系统。RabbitMQ是一款开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中...
赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....
常见的问题
本次异常的具体描述为:“Communications link failure due to underlying exception: **BEGINNESTED EXCEPTION** java.io.EOFException STACK TRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully...
import java.io.EOFException; import java.net.ServerSocket; import java.net.Socket; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event....
解决Could not load font file: C:\Windows\FONTS\mstmc.ttf 对应问题贴https://blog.csdn.net/guozhangjie1992/article/details/103679640
主要介绍了 AndroidApk混淆编译时,报告Error:Execution failed for task ‘:gviews:transformClassesAndResourcesWithProguardForRelease’.错误解决办法的相关资料,需要的朋友可以参考下
在Java编程中,图片处理是一项常见的任务,而`ImageIO`类是Java标准库提供用于读取、写入和操作图像的重要工具。本篇将详细探讨`ImageIO.read()`方法的相关知识点,以及如何解决可能遇到的问题。 `ImageIO`类位于`...
Java中的异常主要分为两大类:`Error` 和 `Exception`。 - **Error**:表示程序无法处理的情况,比如JVM系统错误、内存不足等。这类错误一般不需要程序员处理,因为它们通常是致命的错误。 - **Exception**:表示...
Nginx + Websocket 实现推送 , 实现思路 : http://blog.csdn.net/shangmingtao/article/details/76639821 . 代码可以直接线上运行.
电子商务信用体系的建设不仅包括技术层面的解决方案,如数字签名、区块链技术等,还涉及到法律法规的完善,以及消费者权益保护机制的建立。例如,建立完善的投诉处理机制,实施严格的商家准入制度,以及定期进行信用...
java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) at java.io....
* java.io.EOFException: Tomcat 启动时报错 + 解决方案:检查 Tomcat 的配置文件是否正确,是否存在语法错误或格式不正确的问题。 * Tomcat 内存溢出 + 解决方案:检查 Tomcat 的 JVM 参数设置,是否存在内存溢出...
用JAVA语言实现网络聊天import java.io.*; import java.net.*; import java.util.*; public class ChatHandler implements Runnable { protected Socket socket; protected ObjectInputStream dataIn; ...
`java.io.EOFException` **异常描述:** 当程序尝试从文件中读取数据但到达文件末尾时,会抛出`EOFException`。这通常发生在读取二进制文件或其他非文本文件时。 **解决方案:** - **正确处理文件读取:** 在...
在提供的资源"flowablestudy"中,可能包含了实现以上功能的Java源代码示例,这将帮助读者深入理解Flowable的工作原理和使用方法。通过阅读和实践这些源码,可以更有效地掌握Flowable的流程部署和启动操作,同时也...
在Java编程环境中,"java.security.InvalidKeyException: illegal Key Size" 是一个常见的错误,通常发生在加密或解密操作中。这个错误表示你试图使用的密钥长度超过了Java默认的安全限制。在给定的上下文中,这个...
此外,还有其他一些常见的错误,例如 ArrayStoreException、ClassCastException、EOFException、FileNotFoundException、IOException、NoSuchMethodException 等。这些错误都有其特定的原因和解决方法。 通过了解...
1. **跨平台兼容性**:Java 设计之初就旨在支持多种不同的机器,包括但不限于: - 不同的字符编码标准(如 ASCII、EBCDIC 等)。 - 不同的内部数值表示方式。 - 不同的文件系统,因此有不同的文件名和路径约定。 ...