java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
...
用手机连接电脑的ServerSocket的时候,
在将inputstream包装成ObjectInputStream的时候,一直死循环的抛这个异常。
用电脑写个客户端测试又不抛异常。折腾几个小时,感谢此文,才解决了。
原文地址:
http://blog.csdn.net/hncsy403/article/details/7848785
最近在eclipse开发基于socket通讯方面,出现了一个错误
java.io.StreamCorruptedException: invalid stream header: 64000000
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
然后我开始查找解决方法,其中我发现有两种原因,可能会出现这个错误
1.在初始化链接时,如果先创建输入流,再创建输出流可能会报错,正确创建顺序如下:
ObjectOutputStream output=new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream input=new ObjectInputStream(socket.getInputStream());
ObjectInputStream input=new ObjectInputStream(socket.getInputStream());
2.很不幸,我的程序当时的创建顺序是同上的,也就是说不是以上的原因,那是什么原因呢,相信很多网友也不是上述原因,
经过各种排错,发现原因竟然是socket的端口被阻塞了,也就是我们需要更换端口号来解决,具体做法如下:
例如我之前在一个properties里面的
HOST=localhost
PORT=8888
PORT=8888
我们只需要换成8000,就可以解决问题
实际上是
serverSocket = new ServerSocket(8000);
相关推荐
这种模式适用于一对一的通信场景。 2. Topic模式:Topic模式扩展了Direct模式,允许使用通配符作为路由键。交换机会根据消息的路由键和队列的绑定键进行匹配,如果匹配成功,消息就会被投递。这在一对多或者多对多...
本文将深入探讨Socket通信的基本概念、步骤,并通过一个实例代码来帮助初学者理解如何使用C++进行Socket编程。 首先,Socket是网络上的两个进程间通信的一种端点,它提供了一种在不同主机间交换数据的机制。在C++中...
赠送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....
在Java中,`java.net.Socket` 和 `java.net.ServerSocket` 类提供了Socket通信的基本功能。下面我们将详细解析给定的服务器源代码,了解如何通过Socket实现一对一通信: 1. **创建ServerSocket** `ServerSocket ...
本文实例讲述了PHP的Socket通信之UDP通信方法。分享给大家供大家参考。具体如下: 1.创建一简单的UDP服务器 //服务器信息 $server = 'udp://127.0.0.1:9998'; //消息结束符号 $msg_eof = "\n"; $socket = stream_...
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....
本次异常的具体描述为:“Communications link failure due to underlying exception: **BEGINNESTED EXCEPTION** java.io.EOFException STACK TRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully...
} catch (EOFException ignored) { } catch (IOException ex) { if (listener == Thread.currentThread()) ex.printStackTrace(); } finally { handlers.removeElement(this); } try { dataIn.close(); }...
在探讨Socket的具体工作原理之前,首先明确一点:Socket是一种用于程序间通信的标准接口。它允许不同进程通过网络进行数据交换,无论是同一主机还是不同主机之间的通信。 在Unix操作系统中,一切皆被视为文件。这种...
在现代网络通信中,`Socket`编程作为一种基础且重要的技术被广泛应用。它为应用程序提供了在不同计算机之间发送与接收数据的能力。根据应用需求的不同,可以采用同步或异步的方式进行通信。本文将重点介绍`Socket`的...
同步套接字(Synchronous Socket)是一种网络编程中的通信机制,主要用于客户端和服务器之间的数据交换。同步套接字的工作方式是阻塞式的,即服务器在等待客户端连接或接收数据时,会暂停当前的执行流程,直到有数据...
6. **数据收发**:在Socket通信中,数据通常以字节流的形式进行传输。发送方将字符串转换为字节流,通过Socket发送;接收方则从Socket读取字节流,再将其转换回字符串。 7. **协议解析**:为了让服务器和客户端理解...
本文将详细介绍如何使用GOLANG来解决SOCKET通信中的粘包问题。 首先,理解粘包产生的原因。TCP协议是基于流的,没有明确的数据边界。它会根据网络状况和缓冲区大小来决定何时发送数据,这就可能导致连续发送的...
java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) at java.io....
4. 接收数据:`socket.recv(buffer_size)`,buffer_size是接收缓冲区的大小,函数会阻塞直到接收到数据或遇到EOF。 5. 关闭Socket:`socket.close()`,释放资源。 服务器端(SocketServer)的角色相对复杂,它需要...
在计算机网络编程中,Socket是进程间通信的一种方式,特别是在网络通信中扮演着重要角色。当我们处理TCP连接时,必须了解如何正确地管理和关闭Socket,因为不恰当的操作可能导致一些异常情况,例如标题中提到的问题...
在Android平台下进行Socket通信是一种非常实用且常见的技术,本文将详细解读一个简单的同步Socket服务端与客户端的实现过程,旨在为初学者提供一个易于理解的学习案例。 #### 核心概念解析 - **Socket**:在网络...
SocketConnection和ServerSocketConnection是MIDP(Mobile Information Device Profile)为移动设备实现Socket通信提供的接口。 首先,让我们详细了解SocketConnection。这个接口主要用于客户端的Socket连接。通过...