码云链接: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);
}

  

总结: 按照书中的例题建立客户端与服务器之间通话 和 链接数据库链接和建表 课上都练习过 但要把两个结合在一起 没有例题 自己研究 越改越错 没有思路 由于课下自己没有练习 不懂变通   还是要多听多做多练多问。

 

posted on 2018-12-13 15:31  张文竹  阅读(175)  评论(1编辑  收藏  举报