码云链接:https://gitee.com/hlxwzyyyyzyq/codes
实训要求:使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中
要求:1.客户端从控制台进行输入,并将自己的输出内容和时间保存到数据库的“client_学号”表中
2.服务器端读取到客户端的程序后,从控制台进行输入给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到数据库的表中
3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个"ip_学号"的表
4.提交文件结果包括:代码,数据库导出为.sql文件
服务器端代码:
import java.util.*; import java.io.*; import java.net.*; public class Server_Main { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); ServerSocket server = null; ServerThread thread; Socket kehu = null; while (true){ try { server = new ServerSocket(2010); } catch(IOException e1){ System.out.println("正在监听"); } try { System.out.println("等待呼叫"); kehu = server.accept(); } catch (Exception e) { System.out.println("正在等待客户"+e); } if (kehu !=null){ new ServerThread(kehu).start(); } } } } class ServerThread extends Thread{ Scanner scanner = new Scanner(System.in); Socket socket; DataOutputStream out=null; DataInputStream in=null; String s = null; ServerThread(Socket t) { socket = t; try { out = new DataOutputStream(socket.getOutputStream()); in = new DataInputStream(socket.getInputStream()); for(int i=0;i<10;i++) { String s=in.readUTF(); System.out.println("客户来话:"+s); out.writeUTF(scanner.nextLine()); } } catch (IOException e){} } }
客户端代码:
import java.io.*; import java.net.*; 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 source = scanner.nextLine(); out.writeUTF(source); String s= in.readUTF(); System.out.println("收到服务器的回答:"+s); Thread.sleep(500); } } catch(Exception e) { System.out.println("服务器已断开"+e); } } }
数据库:( 链接 建表 会话无法插入)
Connection con=null; Statement sql; ResultSet rs; try{ Class.forName("com.mysql.kdbc.Driver"); } catch(Exception e){} String uri="jdbc:mysql://localhost:3306/client?useSSL=true"; String user="root"; String password="111111"; try{con = DriverManager.getConnection(uri,user,password);} catch(SQLException e){} String jilu=""; String sqlStr = ""+jilu; try{ sql=con.createStatement(); rs=sql.executeQuery("SELECT bir FROM mess WHERE Number=1001"); while(rs.next()){ String number=rs.getString(1); //String name=rs.getString(2); //Date date=rs.getDate(3); //float height=rs.getFloat(4); System.out.print(number); //System.out.print(name); //System.out.print(date); //System.out.print(height); } con.close(); } catch(SQLException e){ System.out.println(e); }
总结: 按照书中的例题建立客户端与服务器之间通话 和 链接数据库链接和建表 课上都练习过 但要把两个结合在一起 没有例题 自己研究 越改越错 没有思路 由于课下自己没有练习 不懂变通 还是要多听多做多练多问。