java关闭IO流的时候Socket也同时关闭

为什么我关闭IO流的时候,Socket也跟着关闭了。客户端还需要返回信息,怎样才能解决这个问题?或者说应该用什么思路?... 为什么我关闭IO流的时候,Socket也跟着关闭了。客户端还需要返回信息,怎样才能解决这个问题?或者说应该用什么思路? 展开
 我来答
可叹三生繁华
2017-11-23
知道答主
回答量:5
采纳率:0%
帮助的人:4647
展开全部
楼主解决了么,我想到一个办法:
服务端:就是每次接收到一个客户端请求以后,都重新启动一个线程用于逻辑处理,处理完毕后关闭该线程会自动关闭。
客户端:每次发送/接收数据都新建一个socket ,发送完/传输完就关闭当前socket
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
armslave88
推荐于2017-11-23 · TA获得超过416个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:461万
展开全部
你的服务端也建立输出流,可以把信息发给客户端,客户端建立输入流,接受服务端发来的信息,这个可以设为死循环接受,就是while(true) 监听服务端发送回来的信息。
追问

必须在这里写writerc.close();   否者服务端收不到信息,但是一旦关闭了,socket也跟着关闭了。

追答
clientSocket = new Socket("localhost",12580);
String nickName = null;
//创建输出流
PrintWriter pw = new PrintWriter(
new OutputStreamWriter(clientSocket.getOutputStream(),
"UTF-8"),true);
/*
* 建立输出流,给服务端发信息
*/
Scanner scanner = new Scanner(System.in);
OutputStream os = clientSocket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
PrintWriter pw = new PrintWriter(osw,true);

while(true)
{
pw.println(scanner.nextLine());
}
供你参考,简单的写了一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6f004d5
2018-04-19
知道答主
回答量:1
采纳率:0%
帮助的人:881
展开全部
你错的不是关闭writer,是你的writer没有flush,之所以关闭writer客户端会受到消息,是因为执行writer.close()时,缓冲区里的数据都会发送给客户端,真正做到发送数据不是靠writer.close,靠的是writer.flush。要实时和服务器,就不要关闭io流,网上的参考代码大多数都是单次通讯,所以才会在处理完数据后close
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式