请教:用ObjectInputStream实现socket通讯问题。

HelloWorldd 2004-11-17 12:59:43
我在客户端写入后,服务器端读取时总是异常(从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();
}
}
}

请大家帮忙啊,实在不知道该怎么解决:(
...全文
278 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
treeroot 2004-11-19
  • 打赏
  • 举报
回复
这里没有通讯呀,客户端都没有关闭流就退出了
HelloWorldd 2004-11-19
  • 打赏
  • 举报
回复
呵呵 ,csdn有点冷清了啊
  • 打赏
  • 举报
回复
服务器端得到连接并读取客户端数据代码:

public void servrTest() {
// ServerSocket server = new ServerSocket();
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);
in.close();
out.close();
client.close();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
HelloWorldd 2004-11-19
  • 打赏
  • 举报
回复
这问题我都提了2、3天了,几次点击“将帖子提前”,都提示“你的提前太频繁了”,

ft。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧