A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 思考。。。 中级黑马   /  2015-7-15 10:09  /  278 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 建立服务端需要监听一个端口
  2. ServerSocket ss = new ServerSocket(9999);
  3. Socket s = ss.accept ();
  4. InputStream in = s.getInputStream();
  5. byte[] buf = new byte[1024];
  6. int num = in.read(buf);
  7. String str = new String(buf,0,num);
  8. System.out.println(s.getInetAddress().toString()+”:”+str);
  9. s.close();
  10. ss.close();
复制代码


请问,为什么上面代码中int num = in.read(buf);不需要用while循环读取信息呢,它那样不就是读一次没读完就不执行了吗?

2 个回复

倒序浏览
是的,只读一次。你应该刚开始看TCP传输的视频吧,这是为了讲原理而写的简化代码,并不健全,你把视频看下去就知道了。
回复 使用道具 举报
YanLH 发表于 2015-7-15 10:31
是的,只读一次。你应该刚开始看TCP传输的视频吧,这是为了讲原理而写的简化代码,并不健全,你把视频看下 ...

哦哦,那如果给它加上while循环进行读取,循环里同样的String str = new String(buf,0,num);,同样也是可以的是吧,不加while循环的时候,是不是有可能造成数据存储在数组时内存不足,数据存储不全呢?而用while循环就可以解决该问题吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马