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

这是两个小程序,自己的电脑通过两个程序,分别成为客户端和服务器端,实现客户端写字母(在这里特意定义为字母),服务器端收到数据,变回大写字母再输送到客户端,并在客户点显示的功能,以此为出发点,分析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();
        }
    }
}


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


小妞专属



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值