第四次过程性考核
码云地址:https://gitee.com/huangssss/forth.git
实训内容:
- 1.客户端从控制台进行输入,并将自己的输出内容和时间保存到数据库的“client_学号”表中
- 2.服务器端读取到客户端的程序后,从控制台进行输入给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到数据库的表中
- 3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个"ip_学号"的表
- 4.提交文件结果包括:代码,数据库导出为.sql文件
多线程机制
1.客户端
import java.net.*; import java.io.*; import java.util.*; public class Client_Main { public static void main(String[] args) { Socket mysocket; DataInputStream in=null; DataOutputStream out=null; try{ mysocket=new Socket("127.0.0.1",2010); //此处地址是服务器的地址 用来与服务器建立连接 in=new DataInputStream (mysocket.getInputStream()); out=new DataOutputStream (mysocket.getOutputStream()); for (int i=0;i<10;i++){ Scanner scanner = new Scanner(System.in); //从控制台与服务器实现多次对话 String reader = scanner.nextLine(); out.writeUTF(reader); String s=in.readUTF(); System.out.println("客户收到服务器回答:"+s); Thread.sleep(500); } } catch(Exception e){ System.out.println("服务器已断开"+e); } } }
结果:
2.服务器端
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.*; import java.util.*; public class Server_Main { public static void main(String[] args) { 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<10;i++){ Scanner scanner = new Scanner(System.in); //String reader = scanner.nextLine(); String s=in.readUTF(); System.out.println("服务器收到客户提问:"+s); String reader = scanner.nextLine(); out.writeUTF(reader); Thread.sleep(500);//设置断开连接的时间 } } catch(Exception e){ System.out.println("客户已断开"+e); } } }
结果:
3.建立数据库,但是无法将每句话存进数据源库表格中
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.rmi.CORBA.Stub; public class TEXEJDBC { static Connection conn= null; Statement sql; ResultSet rs; public static Connection getConnectionByJDBC() { try {Class.forName("com.mysql.jdbc.Driver"); //加载驱动 } catch(ClassNotFoundException e) {} String uri = "jdbc:mysql://localhost:3306/client?useSSL=true"; String user = "root"; String password="111111"; try{ conn = DriverManager.getConnection(uri,user,password); } catch(SQLException e) {} return conn; } public static void test(){ String sql = "select * from user"; getConnectionByJDBC(); try{ Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { String username = rs.getString("username"); String password= rs.getString("password"); System.out.println(username +""+ password); } } catch (SQLException e){ System.out.println(e.getMessage()); e.printStackTrace(); } finally{ try{ if(conn != null) conn.close(); } catch(SQLException e){ System.out.println(e.getMessage()); e.printStackTrace(); } } } public static void main(String[] args){ TEXEJDBC testjdbc = new TEXEJDBC(); testjdbc.test(); } }
代码行数 | 博客字数 | |
第四次过程性考核 | 180 | 80 |