码云地址:https://gitee.com/bubblerui/fourth_process_assessment/tree/master

第四次过程性考核内容

   使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中

   要求:

         1.客户端从控制台进行输入,并将客户端的输出内容和时间保存到“学号.txt”文件中

         2.服务器端读取到客户端的程序后,给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到文本文件中

         3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个“学号_ip.txt”的文件

    4..提交文件结果包括:代码,通信后生成的txt文件

基本步骤:


      1,服务端创建ServerSocket绑定端口号,循环调用accept()方法
      ·2,客户端创建一个socket并请求和服务器端连接
       3,服务器端接受客户端请求,创建socket与该客户建立连接
       4,两个socket在一个单独的线程上通话
       5,服务器端继续等待新的连接

 

客户机代码:
import java.io.File;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class  Client_Main{ 
    private PrintWriter writer;
        Socket socket; 
        private void client() { 
            System.out.println("尝试连接\n");
            File file =new File("16012019.txt");
            try { 
                socket = new Socket("10.43.11.121", 8080); 
                writer = new PrintWriter(socket.getOutputStream(), true);
               System.out.println("完成连接");
               Scanner sc=new Scanner(socket.getInputStream());
               System.out.println(sc.nextLine());
               System.out.println("我(客户机):");
               Scanner sc1=new Scanner(System.in);
               while(true){
                   String data=sc1.nextLine();
                   writer.println(data);
                   writer.flush();
                   String data1=sc.nextLine();
                   System.out.println("服务机:"+data1);
                   System.out.println("我(客户机):");
               }
            } catch (Exception e) {
                e.printStackTrace(); 
            }
        }
        
        public static void main(String[] args) { 
            Client_Main clien = new Client_Main(); 

            clien.client();
        }
 }
服务器代码:
import java.io.File;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server_main{
    private PrintWriter writer;
    private ServerSocket server; 
    private Socket socket; 
    void serve() {
        try {
            server = new ServerSocket(8080); 
            System.out.println("服务器套接字已经创建成功"); 
            while (true) { 
                System.out.println("等待客户机的连接......."); 
                socket = server.accept(); 
                writer = new PrintWriter(socket.getOutputStream(), true);
                writer.println("您已成功连接到远程服务器!"+"/"+"有什么可以帮你的吗?");
                writer.flush();
                Scanner sc=new  Scanner(System.in);
                Scanner sc1=new Scanner(socket.getInputStream());
                while(true){
                    String data = sc1.nextLine();
                    System.out.println("客户机:"+data);
                    System.out.print("我(服务机):");
                    String data1 = sc.nextLine();
                    writer.println(data1);
                    writer.flush();
                    Scanner write=new Scanner(System.in);
                    int ip =write.nextByte();
                    File file =new File("16012019_ip.txt");
            }
            }
        } catch (Exception e) {
            e.printStackTrace(); 
        }
    }   
    public static void main(String[] args) { 
        Server_main tcp = new Server_main(); 
        tcp.serve(); 
    }

此次代码没有很好的完成的多线程任务,所以没有运行结果。

在编写代码中不能很好的掌握多线程的相关代码 thread类和run方法也没有很好的使用。