您的位置:首页 > 编程语言 > Java开发

关于read与readLine方法的差别,留给初学java的童鞋的,周六会更新详细解析

2016-04-27 23:00 639 查看
这是两个小程序,自己的电脑通过两个程序,分别成为客户端和服务器端,实现客户端写字母(在这里特意定义为字母),服务器端收到数据,变回大写字母再输送到客户端,并在客户点显示的功能,以此为出发点,分析read与readLine方法,


public class TCPDemo02 {//客户端

    public static void main(String[] args) {

        try {

            Socket socket=new Socket("172.60.20.120",10005);

//定义读取键盘数据的流对象

            BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

//定义目的。将数据写入到socket输出流,发给服务端

            BufferedWriter bufout=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

//定义一个socket读取流,读取服务端返回的大写信息

            BufferedReader bufIn=new BufferedReader(new InputStreamReader(socket.getInputStream()));

            String line=null;

            while ((line=bufr.readLine())!=null) {

                if ("over".equals(line)) {

                    break;

                }

              bufout.write(line);

                bufout.flush();//记得刷新

             String str=bufIn.readLine();

                System.out.println("server"+str);

            }

            bufr.close();

            socket.close();//加个-1

           

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

public class TCPServerDemo02 {//服务器端

    public static void main(String[] args) {

        try {

            ServerSocket server=new ServerSocket(10005);

            Socket socket=server.accept();

            String ip=socket.getInetAddress().getHostAddress();

            System.out.println(ip+"-----connected");

//读取socket读取流中的数据。            

            BufferedReader bufIn=new BufferedReader(new InputStreamReader(socket.getInputStream()));

//目的。socket输出流。将大写数据写入到socket输出流,并发送给客户端。

            BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

            String line=null;

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

                System.out.println(line);

                bufOut.write(line.toUpperCase());

                bufOut.flush();

            }

            socket.close();//客户端关掉

            server.close();//服务端关掉

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}


<
4000
strong>
[/b]

童鞋们可以运行这两个程序,先启用服务器端,再启用客户端,看看程序会出什么结果?自己能不能解决?

小妞专属
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息