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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 糖伯貓 于 2014-2-9 20:45 编辑
  1. TCP服务器端:
复制代码
  1. ServerSocket ss = new ServerSocket(5000);
  2.                 Socket s = ss.accept();
  3.                 InputStream in = s.getInputStream();
  4.                 byte[] buf = new byte[1024];
  5.                 int len = 0;
  6.                 while((len = in.read(buf))!=-1){
  7.                 System.out.println(len);
  8.                
  9.                  System.out.println(new String(buf,0,len));
复制代码



这里while循环里面的in.read(buf)返回的是int型值,我打印了下是字符串的长度,这我也点不理解了,再比较这个长度值是否等于-1这个结束标记?



评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
代码没贴上来
  1. ServerSocket ss = new ServerSocket(5000);
  2.                 Socket s = ss.accept();
  3.                 InputStream in = s.getInputStream();
  4.                 byte[] buf = new byte[1024];
  5.                 int len = 0;
  6.                 while((len = in.read(buf))!=-1){
  7.                 System.out.println(len);
  8.                
  9.                  System.out.println(new String(buf,0,len));
复制代码
回复 使用道具 举报
in.read() 方法 当读取到结束时,该方法返回-1;

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
当 未读到结束时 ,in.read()方法返回的是你这次读取的实际长度。 很明显,用 while((len = in.read(buf))!=-1)可以达到循环读取的目的,直至读取结束,因为此时in.read()返回-1,退出while循环了就。

我解释的是你要问的不。。。
回复 使用道具 举报
这里的-1是,当你读取数据读不到的时候,就会返回-1告诉你,已经没有数据可以读了。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
in.read()的意思是读到没有数据可读时,返回-1,说明读结束了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
in.read(buf)方法返回的是存储在buf缓冲区数组中的实际长度,最大等于buf的长度,当文件读取结束后返回-1,循环结束

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马