socket的问题

v_vwv_vhhi 2013-02-11 01:26:56
刚学socket,代码如下:
Socket socket=new Socket("localhost",7890);
OutputStream os=socket.getOutputStream();
//向服务器断写数据
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
bw.write("写入到服务器端");
bw.flush();
socket.shutdownOutput();
//接受服务器端数据
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println("我是客户端,服务器端信息为:"+s);
socket.shutdownInput();
//向服务器端写入对象
ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());
User user=new User();
User u2=user.login();
oos.writeObject(u2);
bw.close();
br.close();
is.close();
oos.close();
socket.close();

但是运行后ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());这一句出现了异常,异常信息为java.net.SocketException: Socket output is shutdown
at java.net.Socket.getOutputStream(Socket.java:832)
意思是不是调用 socket.shutdownOutput();后再调用socket.getOutputStream()是不能再打开输出流的?
如果是这样,那怎么弄才能再次打开呢?
...全文
9702 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SnailRen 2014-02-15
  • 打赏
  • 举报
回复
引用 1 楼 bluemoby 的回复:
重新打开一个socket不用原来的
想请问一下,重新打开一个socket是怎么打开啊。客户端连接服务器就连接一次,重新打开一个socket的意思难道要让客户端重新再连一次?
v_vwv_vhhi 2013-02-11
  • 打赏
  • 举报
回复
引用 1 楼 bluemoby 的回复:
重新打开一个socket不用原来的
恩,可以了,再问下聊天软件也是这样的吗,每次都重新打开一个SOCKET
bluemoby 2013-02-11
  • 打赏
  • 举报
回复
引用 2 楼 v_vwv_vhhi 的回复:
引用 1 楼 bluemoby 的回复:重新打开一个socket不用原来的 恩,可以了,再问下聊天软件也是这样的吗,每次都重新打开一个SOCKET
具体的聊天软件我没做过,不过使用socket的时候没必要每打印一句话建立一个SOCKET,可以重复使用一个SOCKET,只要你不关闭输入输出流或关闭SOCKET,可以重复使用同一个SOCKET。创建socket相当于建立tcp连接,这个连接时可以重复使用的。
bluemoby 2013-02-11
  • 打赏
  • 举报
回复
重新打开一个socket不用原来的

67,512

社区成员

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

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