当前位置: 代码迷 >> Java相关 >> 急救! java socket流的关闭有关问题 close shutdown
  详细解决方案

急救! java socket流的关闭有关问题 close shutdown

热度:3192   发布时间:2013-02-25 21:48:57.0
急救! java socket流的关闭问题 close shutdown
我想用socket实现客户端与服务器端的通信,问题是:
当我在一端向另一端用BufferedWriter(OutputStreamWriter(socket.getOutputStream()))写入数据时,写完了,如果不关闭bw,程序会一直阻塞,大家知道的;但是若关闭了bw,信息是写出去了,但是bw关闭后连带socket他也给我关闭了,问题是我还有东西要写回呢!即,我要实现信息互通,而不是单方向写入,写完后一关了之;我还要用到InputStream,还要写回信息。
这就出现了一对矛盾,关了bw不好,不关又不行;我尝试用socket.shutdownInputStream/OutputStream(),但效果不理想,本类可以写出的,却连写都写不进去了。另外,如果非用此方法不可的话,请高人给我举个例子吧!我愚笨,目前无法理解为什么我用它写出去的东西,BufferedReader读到的却是null,null!
小弟因学期项目迫在眉睫,卡在此处,望求高人指点,希望大家不吝赐教啊!!!问题补充: 

大家帮帮忙吧!请大家帮帮忙吧!

以上是我在百度知道上提问的,等了许久,没见找一个有价值的答案。csdn上尽有电脑高手,请各位高手帮帮忙吧!


------解决方案--------------------------------------------------------
把BufferedWriter(OutputStreamWriter(socket.getOutputStream()))
分成多条语句,只关闭对应的对象就可以了

------解决方案--------------------------------------------------------
用多线程就行了。。。
------解决方案--------------------------------------------------------
如果客户端和服务器端要不断的双向通讯的话也可以自定义通讯协议,即定义双方发送数据的格式,按照格式解析数据,不关闭输入输出,直到整个客户端程序退出。

一般socket实现客户端和服务器端的通讯,服务器端都是单独启动一个线程来负责与客户端交互,当然还要看具体的需求是什么样了。
  相关解决方案