java关闭IO流的时候Socket也同时关闭
为什么我关闭IO流的时候,Socket也跟着关闭了。客户端还需要返回信息,怎样才能解决这个问题?或者说应该用什么思路?...
为什么我关闭IO流的时候,Socket也跟着关闭了。客户端还需要返回信息,怎样才能解决这个问题?或者说应该用什么思路?
展开
3个回答
展开全部
楼主解决了么,我想到一个办法:
服务端:就是每次接收到一个客户端请求以后,都重新启动一个线程用于逻辑处理,处理完毕后关闭该线程会自动关闭。
客户端:每次发送/接收数据都新建一个socket ,发送完/传输完就关闭当前socket
服务端:就是每次接收到一个客户端请求以后,都重新启动一个线程用于逻辑处理,处理完毕后关闭该线程会自动关闭。
客户端:每次发送/接收数据都新建一个socket ,发送完/传输完就关闭当前socket
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的服务端也建立输出流,可以把信息发给客户端,客户端建立输入流,接受服务端发来的信息,这个可以设为死循环接受,就是while(true) 监听服务端发送回来的信息。
追答
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());
}
供你参考,简单的写了一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你错的不是关闭writer,是你的writer没有flush,之所以关闭writer客户端会受到消息,是因为执行writer.close()时,缓冲区里的数据都会发送给客户端,真正做到发送数据不是靠writer.close,靠的是writer.flush。要实时和服务器,就不要关闭io流,网上的参考代码大多数都是单次通讯,所以才会在处理完数据后close
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询