| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:很费解的一点用法
只看楼主 加入收藏
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
结帖率:91.8%
收藏
已结贴  问题点数:50 回复次数:9 
很费解的一点用法
byte[] buf = new byte[1024];
        int len = is.read(buf);
        String getStr = new String(buf, 0, len);//String getStr = new String(buf, 0, is.read(buf));
        System.out.println(getStr);

        ss.close();
        s.close();
我在复习TCP传输客户端的时候发现,如果红色的代码,用注释后的代码就会报错!read()是读buf并且将所读的保存在缓冲数字buf中,那么在写read(buf),编译不会报错?但是运行时是会报错的,因为buf不在是byte数组,但是byte数组跟缓冲行数组又有什么区别?为什么会报错?
搜索更多相关主题的帖子: 客户端 
2014-07-25 00:18
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:17 
贴完整的代码出来看看

思考赐予新生,时间在于定义
2014-07-25 09:00
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:0 
回复 2 楼 love 云彩
public class ServerDemo {

    public static void main(String[] args) throws IOException {
        
        
        ServerSocket ss = new ServerSocket(8888);
        Socket s = ss.accept();
        String ip = s.getInetAddress().getHostAddress();
        
        InputStream is = s.getInputStream();
        
        byte[] buf = new byte[1024];
        int len = is.read(buf);
        String message = new String(buf,0,len);
        System.out.println("客户端为:"+ip+" 的 发来信息:  "+message);
    }

}

我只是个演员,还是业余的!!
2014-07-25 22:43
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:17 
试试强制类型转换
String getStr = new String(buf, 0, (int)(is.read(buf)));
2014-07-25 22:44
xl881221
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:177
注 册:2014-3-23
收藏
得分:17 
没报错啊
import
import
import
import
public class ServerDemo {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8888);
        Socket s = ss.accept();
        String ip = s.getInetAddress().getHostAddress();
        InputStream is = s.getInputStream();
        byte[] buf = new byte[1024];
        /*int len = is.read(buf);
        String message = new String(buf,0,len);*/
        String message = new String(buf,0,is.read(buf));
        System.out.println("客户端为:"+ip+" 的 发来信息:  "+message);
    }
}

import
import
import
import


public class ClientDemo {
    public static void main(String[] args) throws UnknownHostException, IOException{        
        Socket client=new Socket("192.168.1.101",8888);        
        OutputStream out=client.getOutputStream();        
        byte[] b="hello".getBytes();
        out.write(b, 0, b.length);
        out.close();
        client.close();
    }
}
2014-07-26 11:28
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:0 
回复 4 楼 日知己所无
我转了,也错

我只是个演员,还是业余的!!
2014-07-27 08:56
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:0 
回复 4 楼 日知己所无
我讲的不够好,你可能没理解我的意思

我只是个演员,还是业余的!!
2014-07-27 08:59
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:0 
回复 4 楼 日知己所无
这是服务端:
ublic class ServerDemo {

    public static void main(String[] args) throws IOException {
        
        
        ServerSocket ss = new ServerSocket(8887);
        Socket s = ss.accept();
        String ip = s.getInetAddress().getHostAddress();
        
        InputStream is = s.getInputStream();
        
        byte[] buf = new byte[1024];
        //is.read(buf)
        String message = new String(buf,0,is.read(buf));
        System.out.println("客户端为:"+ip+" 的 发来信息:  "+message);
    }

}
客户端:
public class ClientDemo {


    public static void main(String[] args) throws UnknownHostException, IOException {
        
        Socket s = new Socket("127.0.0.1",8887);
        OutputStream os = s.getOutputStream();
        os.write(" 你妹啊  ".getBytes() );
        
        
        

    }

}
注释部分的代码如果写上去,运行客户端就会报错!不写就不会报错,好难理解原有!

我只是个演员,还是业余的!!
2014-07-27 09:03
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:0 
回复 3 楼 经哥
好了,转换就没有报错了,看来是这样的!刚才弄错了!还以为报错了!

我只是个演员,还是业余的!!
2014-07-27 09:05
小气的男人
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:17
注 册:2014-6-21
收藏
得分:0 
String message = new String(buf,0,is.read(buf));
string构造中的第三个参数应该是用来给长度的,可是为什么要用is.read(buf)呢?
可不可以个解释一下
2014-07-27 12:23
快速回复:很费解的一点用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019029 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved