📄 qqserver.java
字号:
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 + -