📄 server.java
字号:
import java.io.*;
import java.net.*;
import java.math.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import decrypt.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class Server extends Frame implements ActionListener,Runnable
{Label label=new Label("这是服务器端,连接人请看右边清单");
Label laconnect=new Label("信息列表");
Label connectip=new Label("连接人IP列表");
Label seemessage=new Label("查看聊天记录请输入日期,格式如“X月X日”,按回车键确定");
static TextField see=new TextField(20);
static Button b_all=new Button("全部用户");
static Button b_online=new Button("在线列表");
static Button d_all=new Button("删除用户");
static Button d_online=new Button("阻止用户在线");
Panel panel=new Panel();
Panel pconnect=new Panel();
Panel pcenter=new Panel();
static List liconnect=new List(20);
static TextArea a_connect,a_message;
ServerSocket server;
Thread connect;
DataInputStream in;
DataOutputStream out;
receivemessage message;
Imagecanvas sercan=new Imagecanvas("see.jpg");
MenuBar menubar;Menu menu1,menu2;
static MenuItem me_item1,me_item2,me_item3,me_item4;
public Server()
{super("服务器端");
setBounds(100,80,550,470);
a_connect =new TextArea();
a_message=new TextArea();
setLayout(null);
menubar=new MenuBar();menu1=new Menu("用户管理");menu2=new Menu("密钥管理");
me_item1=new MenuItem("新增用户");me_item2=new MenuItem("删除用户");
me_item3=new MenuItem("新增对称密码"); me_item4=new MenuItem("新增非对称密码");
menu1.add(me_item1);menu1.add(me_item2);menu2.add(me_item3);
menu2.add(me_item4);
menubar.add(menu1);menubar.add(menu2);
setMenuBar(menubar);
add(seemessage);add(see);add(label);add(laconnect);add(connectip);add(a_connect);add(a_message);add(liconnect);add(b_all);add(b_online);add(d_all);add(d_online);add(sercan);
connectip.setBounds(40,60,100,20);a_connect.setBounds(20,80,300,150);
laconnect.setBounds(80,240,100,20);a_message.setBounds(20,260,300,150);liconnect.setBounds(360,80,100,260);
b_all.setBounds(360,350,50,20);b_online.setBounds(420,350,80,20);
d_all.setBounds(360,380,50,20);d_online.setBounds(420,380,80,20);
seemessage.setBounds(20,420,350,20);see.setBounds(50,440,80,20);
sercan.setBounds(-25,0,600,500);
message=new receivemessage();
message.start();
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);
}
});
show();
try{server=new ServerSocket(9876);}
catch(IOException e){};
connect=new Thread(this);
connect.start();
}
public void run()
{try
{while(true)
{Socket client=server.accept();
a_connect.append(client.getInetAddress()+" is connecting."+"\n");
firstthread fi=new firstthread(this,client);
fi.setPriority(Thread.MIN_PRIORITY);fi.start();
}
}
catch(Exception e){};
}
public void actionPerformed(ActionEvent e)
{}
public static void main(String args[])
{new Server();}
}
class firstthread extends Thread implements ActionListener
{ Socket client;String line,name;int k=0;
String str;Date date;
static Connection con;Statement sql;
static ResultSet rs;
static DataOutputStream firstout,output;
Server server;
DataInputStream input;
int outport=6789;
int is_one=1;
public firstthread(Server server,Socket client)
{
this.server=server;this.client=client;
Server.liconnect.addActionListener(this);
Server.b_all.addActionListener(this);
Server.b_online.addActionListener(this);
Server.d_all.addActionListener(this);
Server.d_online.addActionListener(this);
Server.see.addActionListener(this);
Server.me_item1.addActionListener(this);Server.me_item2.addActionListener(this);
Server.me_item3.addActionListener(this);Server.me_item4.addActionListener(this);
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try
{con=DriverManager.getConnection("jdbc:odbc:hong","dba","sein2000");
sql=con.createStatement();
}
catch(SQLException e){}
try
{input=new DataInputStream(client.getInputStream());
output=new DataOutputStream(client.getOutputStream());
firstout=new DataOutputStream(client.getOutputStream());
}
catch(IOException e)
{System.out.println("connect err");}
}
public void run()
{decrypt_kind hong=new decrypt_kind();
int ok=0;int is_pass=0;
try
{ while(true)
{ int i=1;String belong_dept=new String("");
String sqlname,sqlword,is_message,port,sqldebe,pass_con1="",pass_con2="",pass_con3="",pass_con4="",pass_con5="";
String dept_con1,dept_con2,dept_con3,dept_con4,dept_con5;
String dept_port1,dept_port2,dept_port3,dept_port4,dept_port5;
String dept_man1,dept_man2,dept_man3,dept_man4,dept_man5;
String sname,sword,sdebe,pass_sent="",resultpass;
str=input.readUTF();String result=new String(hong.de_RSA(str));
if(result.startsWith("pass"))
{ int j=0,k=0;
resultpass=result.substring(4);
j=resultpass.indexOf("\1");
k=resultpass.indexOf("\2");
sname=resultpass.substring(0,j);
sword=resultpass.substring(j+1,k);
sdebe=resultpass.substring(k+1,resultpass.length());
try
{
rs=sql.executeQuery("SELECT * FROM t_pass ");
while(rs.next())
{sqlname=rs.getString(1);sqlword=rs.getString(2);is_message=rs.getString(3);
port=rs.getString(4);sqldebe=rs.getString(5);
pass_con1=rs.getString(6); pass_con2=rs.getString(7); pass_con3=rs.getString(8);
if(sqlword.trim().equals(sword.trim())&&sqlname.trim().equals(sname.trim())&&sqldebe.trim().equals(sdebe.trim()))
{Server.liconnect.add(sqlname);
is_pass=1;
pass_sent+=("PASSOK"+is_message+port);
pass_sent+=(pass_con1+pass_con2+pass_con3+"\1");
break;
}
}
}
catch(SQLException e2){};
if(is_pass==0)
{output.writeUTF("Sorry");}
else
{is_pass=0;
String s1="'"+sname+"'";String s2="'"+""+"'";String s3="'"+""+"'";String temp="INSERT INTO t_online VALUES ("+s1+","+s2+","+s3+")";
System.out.println(""+sql.executeUpdate(temp));
try
{rs=sql.executeQuery("SELECT * FROM t_dept");
while(rs.next())
{
dept_con1=rs.getString(1).trim();
dept_man1=rs.getString(2);dept_port1=rs.getString(3);
dept_man2=rs.getString(4);dept_port2=rs.getString(5);
dept_man3=rs.getString(6);dept_port3=rs.getString(7);
dept_man4=rs.getString(8);dept_port4=rs.getString(9);
dept_man5=rs.getString(10);dept_port5=rs.getString(11);
if(pass_con1.trim().equals(dept_con1.trim()))
{
pass_sent+=(dept_man1+dept_port1+dept_man2+dept_port2+dept_man3+dept_port3+dept_man4+dept_port4+"\2");
}
else if(pass_con2.trim().equals(dept_con1.trim()))
{
pass_sent+=(dept_man1+dept_port1+dept_man2+dept_port2+dept_man3+dept_port3+dept_man4+dept_port4+"\2");
}
else if(pass_con3.trim().equals(dept_con1.trim()))
{
pass_sent+=(dept_man1+dept_port1+dept_man2+dept_port2+dept_man3+dept_port3+dept_man4+dept_port4+"\2");
}
else if(pass_con4.trim().equals(dept_con1.trim()))
{
pass_sent+=(dept_man1+dept_port1+dept_man2+dept_port2+dept_man3+dept_port3+dept_man4+dept_port4+"\2");
}
}
}
catch(SQLException e2){};
System.out.println(pass_sent);
output.writeUTF(pass_sent+"\3");pass_sent="";
}
}
else if(result.startsWith("whoonline"))
{String sqlman;String onlineman=new String("online");
try
{
rs=sql.executeQuery("SELECT * FROM t_online ");
while(rs.next())
{onlineman+=rs.getString(1);}
}
catch(SQLException ioe){}
output.writeUTF(onlineman+"\1");
}
else if(result.startsWith("out"))
{String outman=result.substring(3);String s1="'"+outman+"'";String s2="'"+""+"'";String s3="'"+""+"'";String temp="DELETE FROM t_online WHERE name="+s1+"";
System.out.println(""+sql.executeUpdate(temp));
}
else if(result.startsWith("updata"))
{String upword=result.substring(6);int updatanumber=upword.indexOf("\1");String updataman=upword.substring(0,updatanumber);String updataword=upword.substring(updatanumber+1);
String s1="'"+updataman+"'",s2="'"+updataword+"'";
String temp="UPDATE t_pass set password="+s2+" WHERE passname="+s1;
sql.executeUpdate(temp);output.writeUTF("updataok");
}
else if(result.startsWith("sendmessage"))
{
int temponline=0;String temp=new String(result.substring(11));int tempnumber=temp.indexOf("\1");int tempnumber2=temp.indexOf("\2");
String tempman=new String(temp.substring(0,tempnumber).trim());String tempmessage=new String(temp.substring(tempnumber+1,tempnumber2));String tempdate=new String(temp.substring(tempnumber2+1));
for(i=1;i<=Server.liconnect.getItemCount();i++)
{String templist=Server.liconnect.getItem(i-1);
if(templist.trim().equals(tempman.trim()))
{temponline=1;break;}
}
if(temponline==1)
{
output.writeUTF("sendok");String ss1="'"+tempman+"'",ss2="'"+tempmessage+"'",ss3="'"+temponline+"'",ss4="'"+tempdate+"'";
String sendtemp="INSERT INTO t_message VALUES ("+ss1+","+ss2+","+ss3+","+ss4+")";
System.out.println(""+sql.executeUpdate(sendtemp));
}
else if(!(temponline==1)){output.writeUTF("sendfalse");String ss1="'"+tempman+"'",ss2="'"+tempmessage+"'",ss3="'"+temponline+"'",ss4="'"+tempdate+"'";
String sendtemp="INSERT INTO t_message VALUES ("+ss1+","+ss2+","+ss3+","+ss4+")";
sql.executeUpdate(sendtemp);
String temp2="UPDATE t_pass set is_message='1' WHERE passname="+ss1;
System.out.println(sql.executeUpdate(sendtemp));
}
}
}
}
catch(Exception e1){}
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==Server.me_item1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -