第四次过程性考核

Posted ddongqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四次过程性考核相关的知识,希望对你有一定的参考价值。

第四次过程性考核

 

 一:码云:https://gitee.com/ddongqi/fourth_process_assessment

二:题目要求:

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

1.客户端从控制台进行输入,并将自己的输出内容和时间保存到数据库的“client_学号”表中

2.服务器端读取到客户端的程序后,从控制台进行输入给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到数据库的表中

3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个"ip_学号"的表

4.提交文件结果包括:代码,数据库导出为.sql文件

 

三:代码 

1:客户端通过控制台:

import java.net.*;
import java.util.*;
public class Client_Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        Thread readData;
        ReceiveLetterForClient receiver = new ReceiveLetterForClient();
        try{readData = new Thread(receiver);
            readData.start();
            byte []buffer= new byte[1];
            InetAddress address =InetAddress.getByName("127.0.0.1"); 
            DatagramPacket datapack=
            new DatagramPacket(buffer,buffer.length,address,666);
            DatagramSocket postman = new DatagramSocket();
            System.out.print("输入发送给服务器的信息:");
            while (scanner.hasNext()){
                String mess = scanner.nextLine();
                buffer = mess.getBytes();
                if(mess.length()==0)
                    System.exit(0);
                buffer= mess.getBytes();
                datapack.setData(buffer);
                postman.send(datapack);
                System.out.print("继续输入发送给服务器的信息:");
            }
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}

 

  

 

import java.net.*;
public class ReceiveLetterForClient implements Runnable{
    public void run(){
        DatagramPacket pack=null;
        DatagramSocket postman=null;
        byte data[]=new byte[8192];
        try{
            pack = new DatagramPacket(data,data.length);
            postman=new DatagramSocket(888);
        }
        catch(Exception e){}
        while(true){
            if(postman==null)break;
            else
                try{
                    postman.receive(pack);
                    String message=new String(pack.getData(),0,pack.getLength());
                    System.out.println("收到:"+message);
                }
            catch(Exception e){}
        }
    }
}

 

 

 

2:服务端使用控制台:

 

import java.net.*;
import java.util.*;
public class Server_Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        Thread readData;
        ReceiveLetterForServer receiver = new ReceiveLetterForServer();
        try{
            readData = new Thread(receiver);
            readData.start();
            byte []buffer= new byte[1];
            InetAddress address =InetAddress.getByName("127.0.0.1"); 
            DatagramPacket datapack=
            new DatagramPacket(buffer,buffer.length,address,888);
            DatagramSocket postman = new DatagramSocket();
            System.out.print("输入发送给客户端的信息:");
            while (scanner.hasNext()){
            String mess = scanner.nextLine();
            buffer = mess.getBytes();
            if(mess.length()==0)
                System.exit(0);
            buffer= mess.getBytes();
            datapack.setData(buffer);
            postman.send(datapack);
            System.out.print("继续输入发送给客户端的信息:");
            }
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}

 

 

import java.net.*;
public class ReceiveLetterForServer implements Runnable{
    public void run(){
        DatagramPacket pack=null;
        DatagramSocket postman=null;
        byte data[]=new byte[8192];
        try{
            pack = new DatagramPacket(data,data.length);
            postman=new DatagramSocket(666);
        }
        catch(Exception e){}
        while(true){
            if(postman==null)break;
            else
                try{
                    postman.receive(pack);
                    String message=new String(pack.getData(),0,pack.getLength());
                    System.out.println("收到:"+message);
                }
            catch(Exception e){}
        }
    }
}

 

 

3:连接数据库

GetDBConnection.java
import java.sql.*;
public class GetDBConnection {
    public static Connection connectDB(String DBName,String id,String p){
        Connection con=null;
        String uri=
                "jdbc:mysql://localhost:3306/"+DBName+"?useSSL=true&characterEncoding=utf-8";
        try { Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception e){}
        try {
            con=DriverManager.getConnection(uri,id,p);
        }
        catch (SQLException e){}
        return con;
    }
}

 

 

四: 运行结果

技术分享图片

 

 

五:总结

   以上代码参考书上张三李四对话代码,做得到可以客户端与服务端对话。使用添加语句:Insert  into  表 values 把内容和时间添加到数据库中,但是不会把它和上述的代码结合到一起,只能做到这里了。这章节的内容有点难,光靠课上学的知识真的不足以做出这道题,学到的知识也不是很扎实,课后也没有做练习,导致考核没有做出来。希望在之后的可以做的相对好一些。

六:

学习内容 代码数 博客字数
第四次过程性考核 500 100

以上是关于第四次过程性考核的主要内容,如果未能解决你的问题,请参考以下文章

第四次过程性考核

第四次过程性考核

第四次过程性考核

第四次过程性考核

第四次过程性考核

第四次过程性考核