教材代碼完成狀況測試P402(ch13課上測試)

1、任務要求

  • 0 在Ubuntu中用本身的有位學號建一個文件,教材p402代碼
  • 1 修改代碼,至少增長一個問題和答案
  • 2 隨機選多個問題中的一個進行提問,服務器要正確回答問題
  • 3 提交運行結果截圖,要把全部問題都運行到。

2、源代碼

  • 添加的內容
    添加的問題:"提交本次測試的時間是幾月幾號?"
    添加的回答:"提交本次測試的時間是2019年5月13日"java

  • 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);
        }
    }
}

3、運行截圖

  • 1.問題1
    • 問題:
      git

    • 回答:
      服務器

  • 2.問題2
    • 問題:
      dom

    • 回答:
      socket

  • 3.問題3
    • 問題:
      測試

    • 回答:
      .net

  • 4.問題4
    • 問題:
      code

    • 答案:
      server

SP.碼雲連接

相關文章
相關標籤/搜索