教材代码完成情况测试P402(ch13课上测试)

一、任务要求

  • 0 在Ubuntu中用自己的有位学号建一个文件,教材p402代码
  • 1 修改代码,至少增加一个问题和答案
  • 2 随机选多个问题中的一个进行提问,服务器要正确回答问题
  • 3 提交运行结果截图,要把所有问题都运行到。

二、源代码

  • 添加的内容
    添加的问题:"提交本次测试的时间是几月几号?"
    添加的回答:"提交本次测试的时间是2019年5月13日"

  • Client.java

import java.io.*;
import java.net.*;
import java.util.Random;

public class Client {
    public static void main(String args[]) {
        String [] mess ={"2010世界杯在哪举行?","巴西进入世界杯了码?","中国进入世界杯了码?","提交本次测试的时间是几月几号?"};
        Socket mysocket;
        DataInputStream in=null;
        DataOutputStream out=null;
        int i = (int) (Math.random() * 4 + 0);
        try{  mysocket=new Socket("127.0.0.1",2010);
            in=new DataInputStream(mysocket.getInputStream());
            out=new DataOutputStream(mysocket.getOutputStream());
            //for(int i=0;i<mess.length;i++) {
                out.writeUTF(i+"");//传特定的随机值给Server类
                out.writeUTF(mess[i]);
                String  s=in.readUTF();   //in读取信息,堵塞状态
                System.out.println("客户收到服务器的回答:"+s);
                Thread.sleep(500);
            //}
        }
        catch(Exception e) {
            System.out.println("服务器已断开"+e);
        }
    }
}

  • Server.java
import java.io.*;
import java.net.*;
import java.util.Random;

import static java.lang.Integer.parseInt;

public class Server {
    public static void main(String args[]) {
        String[] answer = {"南非", "进入世界杯了", "哈哈...问题真逗!", "提交本次测试的时间是2019年5月13日"};
        ServerSocket serverForClient = null;
        Socket socketOnServer = null;
        DataOutputStream out = null;
        DataInputStream in = null;

        try {
            serverForClient = new ServerSocket(2010);
        } catch (IOException e1) {
            System.out.println(e1);
        }
        try {
            System.out.println("等待客户呼叫");
            socketOnServer = serverForClient.accept(); //堵塞状态,除非有客户呼叫
            out = new DataOutputStream(socketOnServer.getOutputStream());
            in = new DataInputStream(socketOnServer.getInputStream());
            //for(int i=0;i<answer.length;i++) {
            String s1 = in.readUTF();
            int i = parseInt(s1);
            String s = in.readUTF(); // in读取信息,堵塞状态
            System.out.println("服务器收到客户的提问:" + s);

            out.writeUTF(answer[i]);
            Thread.sleep(500);
            //}
        } catch (Exception e) {
            System.out.println("客户已断开" + e);
        }
    }
}

三、运行截图

  • 1.问题1

    • 问题:

    • 回答:

  • 2.问题2

    • 问题:

    • 回答:

  • 3.问题3

    • 问题:

    • 回答:

  • 4.问题4

    • 问题:

    • 答案:

SP.码云链接

原文地址:https://www.cnblogs.com/jxxydwt1999/p/10856394.html