在SOCKET编程中遇到了点问题,请教一下大虾们。
(1) 我在本机上写了一个SOCKET程序测试了一下,当服务器端开启后,再打开客户端,程序运行一切正常,这时候、我试着断开服务器端:此时客户端出错了,异常提示:java.net.SocketException: Connection reset by peer: socket write error。如果在这个时候再打开服务器端,出现一样的异常提示。
(2) 我在客户端写了个服务器端断开时候的处理程序,也就是让客户端重新连接连接服务器端。
1 try{
2 if(clientSocket!=null) //客户端套接字
3 clientSocket.close();
4 clientSocket=null;
5 os.close(); //客户端输出流
6 clientSocket=new Socket(localhost,8080);
7 os=clientSocket.getOutputStream();
8 }catch(Exception e2)
9 {} 重复第一步,还是不行,错误异常提示如下:
java.net.SocketException: Socket closed
错误提示是说SOCKET被关,所以我把上面代码的2 3 4 5四行注释掉,结果竟可以了。
问题虽然暂时解决了,不过有些地方还是不清楚。为什么当服务器断开的时候,我在客户端调用clientSocket.close();后再重新初始化会提示Socket closed。我在客户端和服务器端都是直接用inputstream,outputstream来通讯的,不知道和这个是否有关系
InputStream is=clientSocket.getInputStream();
OutputStream os=clientSocket.getOutputStream();
(1) 我在本机上写了一个SOCKET程序测试了一下,当服务器端开启后,再打开客户端,程序运行一切正常,这时候、我试着断开服务器端:此时客户端出错了,异常提示:java.net.SocketException: Connection reset by peer: socket write error。如果在这个时候再打开服务器端,出现一样的异常提示。
(2) 我在客户端写了个服务器端断开时候的处理程序,也就是让客户端重新连接连接服务器端。
1 try{
2 if(clientSocket!=null) //客户端套接字
3 clientSocket.close();
4 clientSocket=null;
5 os.close(); //客户端输出流
6 clientSocket=new Socket(localhost,8080);
7 os=clientSocket.getOutputStream();
8 }catch(Exception e2)
9 {} 重复第一步,还是不行,错误异常提示如下:
java.net.SocketException: Socket closed
错误提示是说SOCKET被关,所以我把上面代码的2 3 4 5四行注释掉,结果竟可以了。
问题虽然暂时解决了,不过有些地方还是不清楚。为什么当服务器断开的时候,我在客户端调用clientSocket.close();后再重新初始化会提示Socket closed。我在客户端和服务器端都是直接用inputstream,outputstream来通讯的,不知道和这个是否有关系
InputStream is=clientSocket.getInputStream();
OutputStream os=clientSocket.getOutputStream();
解决方案 »
- 求教:我的程序引入jxl包,我把我的程序打成jar包后,运行报NoClassFoundError:jxl/write/WritableCell
- 关于java接口的理解
- java数组乘积怎样算?
- JTextArea和JTextpane的转换问题!急请高手帮忙!
- 怎么写Hello world?
- 请看这样的构造函数能不能行得通,若能,这个叫什么模式?
- 如何通过得到的URL或InputStream对象获得FileOutputStream对象?
- 关于按钮的菜鸟问题,马上给分!!!!
- 关于让X在0~9之间循环的代码
- Jb4注册码,我向SUN公司登记了,可注册码现在还没来,不是免费吗!(只能给这么多分了)
- Swing中多个组件排列的问题
- 大家帮忙我这个菜鸟,这个程序该怎样优化代码。
应该是第五行。。5和2换个位置试试。。 应该先关闭流在关闭socket吧?
catch中的异常最好打出来,方便查错。
clientSocket=new Socket(localhost,8080);
os=clientSocket.getOutputStream();close 的時候要倒過來
os.close();
clientSocket.close();