⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqserver.java

📁 可实现整个校园网内聊天
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.Date;
import javax.swing.*;
import javax.swing.JOptionPane;
import java.text.SimpleDateFormat;
import java.sql.*;
import java.util.StringTokenizer;
import java.io.*;
class fuwuqi extends Frame implements ActionListener
{  DatagramPacket data_send=null,data_receive=null;
   DatagramSocket send=null,receive=null;
   InetAddress address;
   String s=null;
   Connection con=null;
   Statement sql=null;
   ResultSet rs=null;
   Label label;
   TextArea text1;
   TextField text2;
   Button button;
   Box basebox,boxh1;
   SimpleDateFormat qq=new SimpleDateFormat("HH时mm分ss秒");
   StringTokenizer fenxi;
   BufferedReader bin;
   FileReader file_reader;
   BufferedWriter bout;
   FileWriter tofile;
   fuwuqi()
   {super("服务器");
    setSize(200,200);
    setBounds(300,300,400,400);
    setVisible(true);
    setBackground(Color.cyan);
    label=new Label("服务器端数据记录");
    text1=new TextArea(10,30);
    text2=new TextField(20);
    button=new Button("发送");
    button.setBackground(Color.cyan);
    button.addActionListener(this);
    basebox=Box.createHorizontalBox();
    boxh1=Box.createVerticalBox();
    boxh1.add(label);
    boxh1.add(Box.createVerticalStrut(4));
    boxh1.add(text1);
    boxh1.add(Box.createVerticalStrut(4));
    boxh1.add(text2);
    boxh1.add(Box.createVerticalStrut(4));
    boxh1.add(button);
    basebox.add(boxh1);
    add(basebox);
    validate();
    addWindowListener (new WindowAdapter()
       {public void windowClosing(WindowEvent e)
          {try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
         catch(ClassNotFoundException e2) {}
         try
         {     
         con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
         sql=con.createStatement();
         sql.executeUpdate("delete  from zaixian");//服务器关闭时清空所有在线用户
          con.close();
          }
          catch(SQLException e4) {}
         
          System.exit(0);}
       }
    );
    while(true)
    {dataprocess();
    }
    }
    public void dataprocess()
    { 
      byte data[]=new byte[8888888];
      try
      {data_receive=new DatagramPacket(data,data.length);
       receive=new DatagramSocket(9999);//服务器接收数据包端口为9999
       }
       catch(Exception e9) {}
       try
       {
         receive.receive(data_receive);
         int length=data_receive.getLength();
         address=data_receive.getAddress();
         String message=new String(data_receive.getData(),0,length);
         s=message;
         }
         catch(Exception e4) {}   
     boolean ff=false;
     text1.append("服务器收到:"+s+'\n');
     String qq="",s1="",s2="",s3="",s4="",s5="",s6="",s7="";
     int k=0;
     fenxi=new StringTokenizer(s,",");
     while(fenxi.hasMoreTokens())
     {String str=fenxi.nextToken();
      k++;
      if(k==1)
      {qq=str;}
      else if(k==2)
      {s1=str;}
      else if(k==3)
      {s2=str;}
      else if(k==4)
      {s3=str;}
      else if(k==5)
      {s4=str;}
      else if(k==6)
      {s5=str;}
      else if(k==7)
      {s6=str;}
      else if(k==8)
      {s7=str;}
     }
     if(qq.equals("denglu"))//接收的数据包为登陆验证数据包
     {
      try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
      catch(ClassNotFoundException e2) {}
      try
      {     
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String qq1="'"+s1.trim()+"'";
      String qq2="'"+s3.trim()+"'";
      rs=sql.executeQuery("select * from yonghuxinxi where 用户名="+qq1);
      while(rs.next())
      {  String q1=rs.getString("密码"); 
         ff=true;
          ResultSet rs1=null;
         if(q1.equals(s2))
         {String nn="dengluchenggong"+','+"zaixian"; 
         try
          { boolean kk=true;
           rs1=sql.executeQuery("select * from zaixian where 用户名="+qq1);
          while(rs1.next())
          {sql.executeUpdate("update  zaixian set ip地址="+qq2+" where 用户名="+qq1);
           kk=false;
          }
          if(kk)
          {sql.executeUpdate("insert into  zaixian values("+qq1+","+qq2+")");
          }
          }  
           catch(SQLException e3) {}
           try
           {
           byte buffer[]=nn.getBytes();
           data_send=new DatagramPacket(buffer,buffer.length,address,8888);//服务器通过8888端口发送登录成功数据包给客户端
           send=new DatagramSocket();
           send.send(data_send);
           }
           catch(Exception e3 ){}
           text1.append("服务器发送:登录成功!"+'\n'+"在线:"+nn+'\n');
         }
         else if(!q1.equals(s2))
         {try
           { 
           String nn="mimachucuo";
           byte buffer[]=nn.getBytes();
           data_send=new DatagramPacket(buffer,buffer.length,address,8888);
           send=new DatagramSocket();
           send.send(data_send);   //发送密码错误数据包
           text1.append("服务器发送:密码错误!"+'\n');
          con.close(); 
          } 
          catch(Exception e9) {}
         }
      }
      if(!ff)
      { try
        {
        String nn="yonghumingbucunzai";
        byte buffer[]=nn.getBytes();
        data_send=new DatagramPacket(buffer,buffer.length,address,8888);
        send=new DatagramSocket();
        send.send(data_send);  //通知客户端提交的用户不存在
        text1.append("服务器发送:不存在该用户!"+'\n'); 
        con.close(); 
        }
        catch(Exception e8) {}
      }
     }
     catch(SQLException e9) {}
     //查询数据库中是否有该用户的留言,有的话发送给该客户端,并且从数据库中删除
     try
      {     
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String qq1="'"+s1.trim()+"'";
      rs=sql.executeQuery("select * from liuyan where 被叫="+qq1);
      while(rs.next())
      {  String q1=rs.getString("主叫"); 
         String q2=rs.getString("数据");
         String q3=rs.getString("时间");
        try
        {
        String nn="liuyan"+','+q1+','+q2+','+q3;
        byte buffer[]=nn.getBytes();
        data_send=new DatagramPacket(buffer,buffer.length,address,8888);
        send=new DatagramSocket();
        send.send(data_send);
        }
        catch(Exception e8) {}
       }
       sql.executeUpdate("delete from liuyan where 被叫="+qq1);
       con.close();
      }
      catch(SQLException e4) {}  
      InetAddress qfq=null;
        String ip=null;
      
      //查询该客户端的IP地址
      try
      {
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String q1="'"+s1.trim()+"'";
      rs=sql.executeQuery("select * from zaixian where 用户名="+q1);
      while(rs.next())
      { ip=rs.getString("ip地址");
      }
      }
      catch(SQLException e3) {} 
        try
        {
        qfq=InetAddress.getByName(ip);
        }
        catch(UnknownHostException e) {}  
      //查询数据库中是否有该用户的离线文件,有的话发给客户端,一次一个,发送完从数据库中删除记录
       try
      {     
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String qq1="'"+s1.trim()+"'";
      String wenjianming="";
      rs=sql.executeQuery("select * from lixianwenjian where 被叫="+qq1);
      while(rs.next())
      {  
         wenjianming=rs.getString("文件名");
         String nn="";
         String q="";
          try
         {File file=new File("E:\\wenjian",wenjianming);
          file_reader=new FileReader(file);
          bin=new BufferedReader(file_reader);
          while((q=bin.readLine())!=null)
          {nn=nn+q+'\n';
          }
          bin.close();
          file_reader.close();
          }
          catch(IOException e3) {}
        try
        { 
        String nnn="filetransfer"+','+wenjianming+','+nn;
        byte buffer[]=nnn.getBytes();
        data_send=new DatagramPacket(buffer,buffer.length,qfq,8888);
        send=new DatagramSocket();
        send.send(data_send); 
        }
        catch(Exception e6) {}
        break;
      }  
      String ll="'"+wenjianming.trim()+"'";
       sql.executeUpdate("delete from lixianwenjian where 被叫="+qq1+" and 文件名="+ll);
       con.close();
       }
      catch(SQLException e4) {} 
   }
   else if(qq.equals("jieshouwanlixianwenjian"))//客户端接收完一个离线文件,查看是否还有其离线文件
   { InetAddress qfq=null;
        String ip=null;
      try
      {
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String q1="'"+s1.trim()+"'";
      rs=sql.executeQuery("select * from zaixian where 用户名="+q1);
      while(rs.next())
      { ip=rs.getString("ip地址");
      }
      }
      catch(SQLException e3) {} 
        try
        {
        qfq=InetAddress.getByName(ip);
        }
        catch(UnknownHostException e) {}  
   
     try
      {     
      con=DriverManager.getConnection("jdbc:odbc:qqserver","","");
      sql=con.createStatement();
      String qq1="'"+s1.trim()+"'";
      String wenjianming="";
      rs=sql.executeQuery("select * from lixianwenjian where 被叫="+qq1);
      while(rs.next())
      {  
         wenjianming=rs.getString("文件名");
         String nn="";
         String q="";
          try
         {File file=new File("E:\\wenjian",wenjianming);
          file_reader=new FileReader(file);
          bin=new BufferedReader(file_reader);
          while((q=bin.readLine())!=null)
          {nn=nn+q+'\n';
          }
          bin.close();
          file_reader.close();
          }
          catch(IOException e3) {}
        try
        { 
        String nnn="filetransfer"+','+wenjianming+','+nn;
        byte buffer[]=nnn.getBytes();
        data_send=new DatagramPacket(buffer,buffer.length,qfq,8888);
        send=new DatagramSocket();
        send.send(data_send); 
        }
        catch(Exception e6) {}
        break;
      }  
      String ll="'"+wenjianming.trim()+"'";
       sql.executeUpdate("delete from lixianwenjian where 被叫="+qq1+" and 文件名="+ll);
       }
      catch(SQLException e4) {} 
   }
    else  if(qq.equals("zhuce"))//数据包为注册数据包
     {boolean gg=true;
      try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
      catch(ClassNotFoundException e2) {}
      try
      {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -