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