请教:用ObjectInputStream实现socket通讯问题。
我在客户端写入后,服务器端读取时总是异常(从IOException分支抛出):
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2133)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2423)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2433)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at com.verywill.go.net.server.GoServer.fk(GoServer.java:55)
at com.verywill.go.net.server.GoServer.main(GoServer.java:100)
客户端建立连接并写入数据代码:
public void test() {
String host = "127.0.0.1";
int port = 12349;
Socket s = new Socket(host, port);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
String msg = "hello worldd";
out.writeObject(msg);
}
catch (UnknownHostException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
服务器端得到连接并读取客户端数据代码:
public void servrTest() {
while (true) {
try {
Socket client = this.server.accept();
ObjectInputStream in = new ObjectInputStream(client.
getInputStream());
ObjectOutputStream out = new ObjectOutputStream(client.
getOutputStream());
String msg = (String) in.readObject();
System.out.println(msg);
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
请大家帮忙啊,实在不知道该怎么解决:(
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2133)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2423)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2433)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at com.verywill.go.net.server.GoServer.fk(GoServer.java:55)
at com.verywill.go.net.server.GoServer.main(GoServer.java:100)
客户端建立连接并写入数据代码:
public void test() {
String host = "127.0.0.1";
int port = 12349;
Socket s = new Socket(host, port);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
String msg = "hello worldd";
out.writeObject(msg);
}
catch (UnknownHostException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
服务器端得到连接并读取客户端数据代码:
public void servrTest() {
while (true) {
try {
Socket client = this.server.accept();
ObjectInputStream in = new ObjectInputStream(client.
getInputStream());
ObjectOutputStream out = new ObjectOutputStream(client.
getOutputStream());
String msg = (String) in.readObject();
System.out.println(msg);
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
请大家帮忙啊,实在不知道该怎么解决:(
...全文
相关推荐
基于JAVA的网络通讯系统设计与实现(论文+系统
此外,采用MVC(Model-View-Controller)或微服务架构可以实现系统的模块化和解耦。8. **异常处理**:在网络通讯中,错误处理至关重要。
通过java实现简单的通讯系统 即时通
本项目以Java语言为基础,利用套接字(Socket)技术,尝试实现了一个简单的通讯系统,旨在提供基本的聊天功能,包括一对一的私聊以及群聊。
Java Socket编程心跳包创建实例解析
心跳包可以解决这个问题,它可以让服务器端知道客户端的状态,是否在线还是离线。三、心跳包的实现心跳包的实现可以是客户端或服务器端,通常情况下,由客户端主动向服务器端发包。
javaqq.rar_通讯编程_Java_
Socket是TCP/IP协议的Java实现,提供双向通信通道,而ServerSocket则用于监听特定端口上的连接请求。
Java即时通讯与文件传输系统源码.zip
**Java Socket编程**:即时通讯的基础是网络通信,Java Socket是Java提供的用于实现客户端-服务器通信的API。


