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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋映辉 中级黑马   /  2012-5-7 21:14  /  1389 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在的问题是这样的,
我在看网络编程这一块,然后输入输出又出现问题了
Socket类的getOutputStream()方法是字节流,也就是说我们最终要从网络上传到其他机器上的必须是字节流,不能是字符流,那如果我想传一个字符串过去,应该怎么办呢?我想到了用StringReader,但是JAVA又没有将字符流转换为字节流的方法。那么该用什么样的方法才能实现这一功能呢?

4 个回复

倒序浏览
编码:字符串变成字节数组
        String -->byte[]:str.getBytes(字符集名);
解码:字节数组变成字符串
        Byte[] -->String:new Strnig(byte[],字符集名);

通过String类的getBytes方法将你的字符串转成字节数组就可以,也就是上面说到的编码。
回复 使用道具 举报
周素强 发表于 2012-5-8 01:16
编码:字符串变成字节数组
        String -->byte[]:str.getBytes(字符集名);
解码:字节数组变成字符串

谢谢  我试试
回复 使用道具 举报
给您写了个测试程序:
服务器端:
public class Trail {
    public static void main(String[] args) throws IOException {
        ServerSocket sss = new ServerSocket(7777);
        Socket ss = sss.accept();
        BufferedReader br = new BufferedReader( new InputStreamReader(ss.getInputStream()) );
        System.out.println(br.readLine());

        br.close();
        ss.close();
        sss.close();
    }
}

客户端:
public class Testext {
    public static void main(String[] args) throws Exception {
        Socket ssc = new Socket("127.0.0.1", 7777);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(ssc.getOutputStream()) );
        bw.write("黑马程序员");

        bw.flush();
        bw.close();
        ssc.close();
    }
}

其实就是用InputStreamReader 和 OutputStreamWriter 将getInputStream() 和 getOutputStream() 转换成字符流!
再用BufferedReader 和 BufferedWriter包一层可以提高读写效率。

回复 使用道具 举报
隋营营 发表于 2012-5-8 08:13
给您写了个测试程序:
服务器端:
public class Trail {

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