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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯兵兵 中级黑马   /  2012-2-29 22:54  /  2140 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看毕老师的java基础视频中的网络编程部分,在TCP传输中,客户端和服务端同时存在Socket对象,在客户端和服务端可以同时调用getInputStream和getOutputStream方法获取流对象,那该怎么区分到底哪个是输入流,哪个是输出流呢?哪位可以结合下面毕老师的代码给解释一下:

import java.io.*;
import java.net.*;

class  TransClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s = new Socket("192.168.1.254",10005);


                //定义读取键盘数据的流对象。
                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));


                //定义目的,将数据写入到socket输出流。发给服务端。
                //BufferedWriter bufOut =
                        //new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);



                //定义一个socket读取流,读取服务端返回的大写信息。
                BufferedReader bufIn =
                        new BufferedReader(new InputStreamReader(s.getInputStream()));

                String line = null;
               
                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                       
                        out.println(line);
//                        bufOut.write(line);
//                        bufOut.newLine();
//                        bufOut.flush();

                        String str =bufIn.readLine();
                        System.out.println("server:"+str);
                       
                }

                bufr.close();
                s.close();


        }
}
/*

服务端:
源:socket读取流。
目的:socket输出流。
都是文本,装饰。



*/

class  TransServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss = new ServerSocket(10005);

                Socket s = ss.accept();
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+"....connected");

                //读取socket读取流中的数据。
                BufferedReader bufIn =
                        new BufferedReader(new InputStreamReader(s.getInputStream()));

                //目的。socket输出流。将大写数据写入到socket输出流,并发送给客户端。
                //BufferedWriter bufOut =
                        //new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

                PrintWriter out = new PrintWriter(s.getOutputStream(),true);

                String line = null;
                while((line=bufIn.readLine())!=null)
                {

                        System.out.println(line);

                        out.println(line.toUpperCase());
//                        bufOut.write(line.toUpperCase());
//                        bufOut.newLine();
//                        bufOut.flush();
                }

                s.close();
                ss.close();

        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马