黑马程序员技术交流社区

标题: 网络编程服务端的问题 [打印本页]

作者: 思考。。。    时间: 2015-7-15 10:09
标题: 网络编程服务端的问题
  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循环读取信息呢,它那样不就是读一次没读完就不执行了吗?
作者: YanLH    时间: 2015-7-15 10:31
是的,只读一次。你应该刚开始看TCP传输的视频吧,这是为了讲原理而写的简化代码,并不健全,你把视频看下去就知道了。
作者: 思考。。。    时间: 2015-7-17 10:12
YanLH 发表于 2015-7-15 10:31
是的,只读一次。你应该刚开始看TCP传输的视频吧,这是为了讲原理而写的简化代码,并不健全,你把视频看下 ...

哦哦,那如果给它加上while循环进行读取,循环里同样的String str = new String(buf,0,num);,同样也是可以的是吧,不加while循环的时候,是不是有可能造成数据存储在数组时内存不足,数据存储不全呢?而用while循环就可以解决该问题吧?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2