NIO相关问题,求大神指教!!!!

当年三毛钱的大饼 2014-02-27 09:03:51
用NIO写了一个Server,用Socket写了一个Client。

Client向Server发送消息没问题,可以接收到,但是当Server向Client回复时,Client却接收不到。

Server已经进入到handleWrite()函数中,而且
channel.write(buffer);的返回值也是正确的,返回的是写入的字符数

但是Client却一直在socketin.readLine()处阻塞,
BufferedReader socketin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("Server:" + socketin.readLine());

无法读取Server返回的字符。


因为我是新学NIO,有很多不懂的地方,还望各位大神不吝赐教!!
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
william_yao 2014-02-27
  • 打赏
  • 举报
回复
你要判断一下结束符,数据已经读出来了,但是未遇到结束符,默认好像是\r\t就表示结尾,你可以自己建立一个约定,比如写入-1为结尾,反正要有个结尾判断。
gaofuqi 2014-02-27
  • 打赏
  • 举报
回复
没看见你有输出,在Server中加上下面的代码试试;

PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
out.println("you input line is:"+socketin.readLine());
灰太狼A代 2014-02-27
  • 打赏
  • 举报
回复
socketin.readLine() 遇到结束表示才会结束,在服务端写的数据,客户端已经读到了,但没有结束符,所以一直阻塞 在服务端可以在 写一行 如 在bufferedWriter中有个newLine()方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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