第四次过程性考核

考核内容:

*160121

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

要求: 

  • 1.客户端从控制台进行输入,并将自己的输出内容和时间保存到数据库的“client_学号”表中
  • 2.服务器端读取到客户端的程序后,从控制台进行输入给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到数据库的表中
  • 3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个"ip_学号"的表
  • 4.提交文件结果包括:代码,数据库导出为.sql文件

 

服务器端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import  java.io.*;
import  java.net.*;
public  class  Server_Main {
   public  static  void  main (String args []) {
    String [] answer = { "我收到你的程序了" , "我要把你的输入内容我的输出内容还有时间保存到数据库中" };
    ServerSocket serverForClient_Main =  null ;
    Socket socketOnServer =  null ;
    DataOutputStream out =  null ;
    DataInputStream in =  null ;
    try  {  serverForClient_Main =  new  ServerSocket( 2010 );
       }
    catch (IOException el) {
        System.out.println(el);
     }
    try {   System.out.println( "等待客户呼叫" );
        socketOnServer = serverForClient_Main.accept();
        out =  new  DataOutputStream(socketOnServer.getOutputStream());
        in =  new  DataInputStream(socketOnServer.getInputStream());
        for ( int  i= 0 ;i<answer.length;i++){
           String s = in.readUTF();
           System.out.println( "服务器收到客户的提问:" +s);
           out.writeUTF(answer[i]);
           Thread.sleep( 500 );
         }
       }
       catch (Exception e) {
           System.out.println( "客户已断开" +e);
         }
       }
     }

客户端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import  java.io.*;
import  java.net.*;
import  java.sql.*;
public  class  Client_Main{
  public  static  void  main (String args[ ]) {
   String [] mess={ "请输入内容和时间,我会保存到'client_学号'表中" , "好的请保存" };
   Socket mysocket;
   DataInputStream in= null ;
   DataOutputStream out= null ;
   Connection con = null ;
   Statement sta =  null ;
   ResultSet rs;
   String SQL;
   try  {
       class .forName( "org.apache.derby.jdbc.EmbeddedDriver" );
        }
    catch (Exception e) { }
   try  {
        String url =  "jdbc:derby:client_学号;create=true" ;
        con=DriverManager.getConnection(uri);
        sta.execute(SQL);
       }
    SQL= "insert into ip_学号 values" +
   try {  mysocket =  new  Socket( "127.0.0.1" , 2010 );
        in =  new  DataInputStream(mysocket.getInputStream());
        out =  new  DataOutputStream(mysocket.getOutputStream());
        for ( int  i= 0 ;i<mess.length;i++) {
            out.writeUTF(mess[i]);
            String s =in.readUTF();
            System.out.println( "客户收到服务器的回答:" +s);
            Thread.sleep( 500 );
         }
       }
       catch (Exception e) {
          System.out.println( "服务器已断开" +e);
       }
      }
     }
  

  考试提交的结果是上面这个,参考的是书上那个客户与服务器互答,但是能力有限服务器端还有问题,参考了别的同学的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import  java.net.*;
import  java.util.*;
public  class  Client_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, 666 );
             DatagramSocket postman= new  DatagramSocket();
             System.out.print( "请输入给服务器发送到消息:" );
             while (scanner.hasNext()){
                 String mess=scanner.nextLine();
                 buffer =mess.getBytes();
                 /*String jilu="(mess,null)";
                 String sqlStr="insert into mess values"+jilu;*/
                 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);
         }
         /*try{
             sql=con.createStatement();
             int ok=sql.executeUpdate(sqlStr);
             rs=sql.executeQuery("select * from client_学号");
             while(rs.next()){
                 String mess=rs.getString(1);
                 String time=rs.getString(2);
                 System.out.print(mess);
                 System.out.print(time);
             }
             con.close();   
         }
         catch(SQLException e){
             System.out.println(e);
         }*/
     }
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import  java.net.*;
import  java.util.*;
import  java.sql.*;
public  class  Server_Main {
     public  static  void  main(String[] args) {
         /*Connection con=null;
         Statement sql;
         ResultSet rs;
         con =GetDBConnection.connectDB("students","root","111111");
         if (con==null)return;*/
         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, 888 );
             DatagramSocket postman= new  DatagramSocket();
             System.out.print( "请输入给客户端发送到消息:" );
             while (scanner.hasNext()){
                 String mess=scanner.nextLine();
                 buffer =mess.getBytes();
                 /*String jilu="(mess,null)";
                 String sqlStr="insert into mess values"+jilu;*/
                 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);
         }
         /*try{
             sql=con.createStatement();
             int ok=sql.executeUpdate(sqlStr);
             rs=sql.executeQuery("select * from client_学号");
             while(rs.next()){
                 String mess=rs.getString(1);
                 String time=rs.getString(2);
                 System.out.print(mess);
                 System.out.print(time);
             }
             con.close();   
         }
         catch(SQLException e){
             System.out.println(e);
         }*/
     }
 
}

  实现数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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( 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.printf( "%25s\n" , "收到:" +message);
                 }
                 catch (Exception e){}
             }
         }
     }
}

总结:

本次java考核到此结束了,也没有给个完整的结局,主要是自己没认真学,学的不精,导致后面搞不太懂。以后会努力复习一下。

转载于:https://www.cnblogs.com/zhoushuai-9/p/10114322.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值