黑马程序员技术交流社区

标题: socket接受的对象是否能用字符流接受 [打印本页]

作者: 山水游客    时间: 2012-7-1 21:17
标题: socket接受的对象是否能用字符流接受
比如
ServerSocket ss = new ServerSocket(11111);

Socket s = ss.accept();

OutputStream out = s.getOutputStream();

能不能把OutputStream 通过转换流换成 字符流读取流?
如果只发送文本数据的话能不能直接发送字符流给服务端呢?
作者: Forever。    时间: 2012-7-1 21:34
本帖最后由 Forever。 于 2012-7-1 22:01 编辑

楼主看我写的代码应该是你想要的这是一个方法的一部分:
BufferedReader br = null;
                PrintWriter pw = null;
                try {
                        System.out.println("服务器开启");
                        //进入等待连接状态
                        ServerSocket ss = new ServerSocket(10003);
                        System.out.println("等待连接");
                        //接受连接得到一个socket对象
                        Socket s =  ss.accept();
                        br = new BufferedReader(new InputStreamReader(s.getInputStream()));在这里包装一下就行了
                        //首先得到文件的名字
                        String name = br.readLine();
                        //然后将名字给了新建的文件
                        pw = new PrintWriter(new FileWriter(name));
                        //开始接受文件内容
                        char[] c = new char[1024];
                        int len = 0;
                        while((len = br.read(c))!=-1)
                        {
                                pw.write(c, 0, len);
                        }
                        pw.flush();
                        System.out.println("文件接收完成!");
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally{
                        try {
                                pw.close();
                                br.close();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }



作者: 赵志勇    时间: 2012-7-1 21:39
本帖最后由 赵志勇 于 2012-7-2 00:00 编辑

ServerSocket ss = new ServerSocket(11111);

Socket s = ss.accept();

OutputStream out = s.getOutputStream();

能不能把OutputStream 通过转换流换成 字符流读取流?//可以转化成字符流。
如果只发送文本数据的话能不能直接发送字符流给服务端呢?//[不可以,因为网络传输过程中的最底层是传输的二进制代码,无论是字符还是图片文件都要转换成二进制代码通过网络协议来封装来发送!网络中传输的物理层传输的就是二进制,所以只能用Stream流来传送,接收的最开始也是字节流




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