Java第15章学习报告

写在前面:

之所以这次叫做学习报告,是因为第十五章着重考察的是应用部分,即实现一些通讯功能。在这里惜惜就只给大家奉上自己的执行代码啦

我才不承认自己是在高强度冲浪呢hhh

import java.io.*;
import java.net.*;
public class TalkClient {
    public static void main(String args[]) {
        try {
//向本机的4700端口发出客户请求
            Socket socket = new
                    Socket("127.0.0.1", 4700);
            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String readline;
            readline = sin.readLine(); //从系统标准输入读入一字符串
            while (!readline.equals("bye")) {
                //将从系统标准输入读入的字符串输出到Server
                System.out.println("自己:"+readline);
                os.println(readline);
                os.flush();//刷新输出流,使Server马上收到该字符串
                readline=is.readLine();
                System.out.println("Client2:" + readline);
                readline = sin.readLine(); //从系统标准输入读入一字符串
            }
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket

        } catch (Exception e) {
            System.out.println("Error:" + e);
        }
    }
}
import java.io.*;
import java.net.*;
public class TalkServer {
    public static void main(String args[]) {
        try {
            ServerSocket server = null;
            try {
                //创建一个ServerSocket在端口4700监听客户请求
                server = new ServerSocket(4700);
            } catch (Exception e) {
                System.out.println("can not listen to:" + e);
            }

            Socket socket = null;
            Socket socket2 = null;
            while (socket==null||socket2==null){
                try {
//使用accept()阻塞等待客户请求,有客户请求到来则产生一个Socket对象,并继续执行
                    //这样保证了两个socket的建立。
                    if(socket==null) {
                        socket = server.accept();
                    }
                    else if(socket!=null){
                        socket2=server.accept();
                    }
                } catch (Exception e) {
                    System.out.println("Error." + e);
                }
            }
            String line;
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is = new BufferedReader(new
                    InputStreamReader(socket.getInputStream()));//is代表输入流
            BufferedReader is2 = new BufferedReader(new
                    InputStreamReader(socket2.getInputStream()));
//由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());//os代表输出流
            PrintWriter os2 = new PrintWriter(socket2.getOutputStream());
//由系统标准输入设备构造BufferedReader对象
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            BufferedReader sin2 = new BufferedReader(new InputStreamReader(System.in));
//在标准输出上打印从客户端读入的字符串
//到这里服务器已经收到了从客户端读入的字符串
            //System.out.println("Client:" + is.readLine());
            line =is.readLine();//从客户端1读入一字符串.
            //注意下标,这里我们规定的是从客户段1向客户端2发送消息。
            while (!line.equals("bye")) {//第一步,从1接受消息
                os2.println(line);   //第二步,向客户端2输出从客户端1传过来的该字符串
                os2.flush();   //刷新输出流,使Client2马上收到该字符串
                line = is2.readLine(); //第三步,从客户端2输入读入一字符串

                os.println(line);
                os.flush();
                line = is.readLine();
            }
            os.close(); //关闭Socket输出流
            os2.close();
            is.close(); //关闭Socket输入流
            is2.close();
            socket.close(); //关闭Socket
            socket2.close();
            server.close(); //关闭ServerSocket
        } catch (Exception e) {
            System.out.println("Error:" + e);
        }
    }
}
import java.io.*;
import java.net.*;
public class TalkClient2 {
    public static void main(String args[]) {
        try {
//向本机的4700端口发出客户请求
            Socket socket = new
                    Socket("127.0.0.1", 4700);
            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String readline;
            readline = is.readLine(); //从系统标准输入读入一字符串
            while (!readline.equals("bye")) {
                System.out.println("Client1:" + readline);
                readline = sin.readLine(); //从系统标准输入读入一字符串
                System.out.println("自己:"+readline);
                os.println(readline);
                os.flush();//刷新输出流,使Server马上收到该字符串
                readline = is.readLine(); //从服务器读入一字符串
            }
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket

        } catch (Exception e) {
            System.out.println("Error:" + e);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值