📄 midserver.java
字号:
p1.add("North",p11);
p1.add("Center",p12);
p2.add(ok);
p2.add(cancel);
listen.add("North",p1);
listen.add("Center",p2);
listen.setSize(150,130);
listen.show();
}
public void CM_dialog()
{
JLabel oldPass =new JLabel("请输入旧密码");
JLabel newPass =new JLabel("请输入新密码");
JLabel okPass =new JLabel("再次输入密码");
change=new Dialog(this,"修改密码",true);
change.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
change.dispose();
}
}
);
JPanel p1=new JPanel(new BorderLayout());
JPanel p11=new JPanel();
JPanel p12=new JPanel();
JPanel p13=new JPanel();
JPanel p2=new JPanel(new FlowLayout());
p11.add(oldPass);
p11.add(old);
p12.add(newPass);
p12.add(nep);
p13.add(okPass);
old.addKeyListener(new KeyLis(this,20));
nep.addKeyListener(new KeyLis(this,20));
nea.addKeyListener(new KeyLis(this,20));
p13.add(nea);
p1.add("North",p11);
p1.add("Center",p12);
p1.add("South",p13);
p2.add(ok1);
p2.add(cancel1);
change.add("North",p1);
change.add("Center",p2);
change.setSize(240,170);
change.show();
}
////////////////////////////////////////////
public void begin()
{
try
{
passFile=new File("c:\\winnt\\");
if(!passFile.exists())
{
passFile.mkdir();
}
passFile=new File("c:\\winnt\\passfile.txt");
if(!passFile.exists())
{
JOptionPane.showMessageDialog(getContentPane(),
"服务器中还没有密码,请输入密码");
old.setEditable(false);
CM_dialog();
}
//取得本机IP地址与端口
InetAddress LocalIP=InetAddress.getLocalHost();
String IPStr=String.valueOf(LocalIP);
String PortStr=new String();
PortStr=Port.getText();
ServerInfor.setText(IPStr+" : "+PortStr);
//取得最大的连接数和端口号
String ConnectStr;
ConnectStr=MaxConnect.getSelectedItem();
int Connet=Integer.parseInt(ConnectStr);
int Port =Integer.parseInt(PortStr);
//waiter w=new waiter();
m_sListener=new ServerSocket(Port,Connet);
while(true)
{
Connected=m_sListener.accept();
serverBreak=false;
ClientOpen=true;
count++;
connectNum.setText(String.valueOf(count));
C_Address=Connected.getInetAddress();
ClientInfo.append(C_Address.toString()+" 已活动\n");
ServiceThread ListenThread=new ServiceThread(this,Connected);
ListenThread.ConnectThread.start();
}
}
catch(Exception e){}
}
}
class WinAdpt extends WindowAdapter
{
SerWin ser;
public WinAdpt(SerWin ser)
{
this.ser=ser;
}
public void windowClosing(WindowEvent e)
{
((JFrame)e.getSource()).dispose();
try
{
ser.m_sListener.close();
if(ser.ClientOpen)
{
ser.Connected.close();
ser.in.close();
ser.out.close();
}
}
catch(Exception E){}
System.exit(0);
}
}
//等待客户端的连接
class ServiceThread implements Runnable
{
int treevalue;
SerWin ser;
Thread ConnectThread;
Socket ConnectedClient;
File inputFile =new File("d:\\");
File[] list=inputFile.listRoots();
boolean show=true;
BufferedOutputStream FileOut;
public ServiceThread(SerWin ser,Socket Connected)
{
this.ser=ser;
ConnectedClient=Connected;
ConnectThread=new Thread(this);//?
}
public void run()
{
try
{
ser.in=new BufferedReader(new InputStreamReader(ConnectedClient.getInputStream()));
ser.out=new PrintWriter(new BufferedOutputStream(ConnectedClient.getOutputStream()));
FileOut =new BufferedOutputStream(ConnectedClient.getOutputStream());
String password=ser.in.readLine();
while(!password.equals("&pass&"))
{
FileReader readIn=new FileReader(ser.passFile);
BufferedReader bufIn=new BufferedReader(readIn);
String s=bufIn.readLine();
if(password.equals(s))
{
ser.out.println("OK");
ser.out.flush();
for(int i=0;i<list.length;i++)
{
ser.out.println(list[i].toString());
ser.out.flush();
}
ser.out.println("&&over&&");
ser.out.flush();
bufIn.close();
readIn.close();
password="&pass&";
}
else if(password.equals("&exit&"))
{
ser.out.close();
ser.in.close();
ConnectedClient.close();
// ser.SerInfo.append(ser.C_Address.toString()+" 已断开\n");
ser.serverBreak=true;
break;
}
else
{
ser.out.println("&nopass&");
ser.out.flush();
bufIn.close();
readIn.close();
ser.SerInfo.append(ser.C_Address.toString()+" 密码错误\n");
password=ser.in.readLine();
}
}
if(!ser.serverBreak)
{
ser.SerInfo.append(ser.C_Address.toString()+" 登陆成功\n");
String s=new String("");
while(!s.equals("Bye_Bye"))
{
s=ser.in.readLine();//读出的是一个行,既遇到\n终止
if(s.equals("addClientTree"))
{
getfilePath();
sendTree();
}
else if(s.equals("&download&"))
{
getfilePath();//处理路径
sendFile();
}
else if(s.equals("&delect&"))
{
// System.out.println("1");
getfilePath();
// System.out.println("2");
delectFile();
}
else if(s.equals("hideServer"))
{
if(show==true)
show=false;
ser.setVisible(show);
}
else if(s.equals("appearServer"))
{
if(show==false)
show=true;
ser.setVisible(show);
}
else {System.out.println(s+" nd");}
}
}
InetAddress QuitAddress=ConnectedClient.getInetAddress();
ser.ClientInfo.append(QuitAddress.toString()+" 已断开\n");
ser.SerInfo.append(QuitAddress.toString()+" 已断开\n");
ser.connectNum.setText(String.valueOf(--ser.count));
ser.in.close();
ser.out.close();
ConnectedClient.close();
}
catch(Exception e){}
}
public void getfilePath()
{
try
{
int i1=0;int cy_j=0;
String filePath=ser.in.readLine();
char[] path=new char[filePath.length()];
char[] newpath=new char[filePath.length()];
filePath.getChars(0,filePath.length(),path,0);
for(int cy_i=0;cy_i<filePath.length();cy_i++)
{
if(path[cy_i]!=',')
{
newpath[cy_j++]=path[cy_i];
}
else
{
newpath[cy_j++]=path[cy_i];
cy_i++;
}
}
filePath=String.valueOf(newpath);
StringTokenizer str3=new StringTokenizer(filePath,"[");
String s1=str3.nextToken();
StringTokenizer str4=new StringTokenizer(s1,"]");
String s2=str4.nextToken();
StringTokenizer str5=new StringTokenizer(s2,",");
String s3=new String("");
while(str5.hasMoreElements())
{
if(i1++<2)str5.nextToken();
else if(i1==2||i1==3)
s3=s3+str5.nextToken();
else
s3=s3+"\\"+str5.nextToken();
}
ser.serverFile=new File(s3);
}
catch(IOException e)
{}
}
public void sendTree()
{
File file=ser.serverFile;
if(file.isDirectory())
{
File[] listfile=file.listFiles();
String[] L1=file.list();
// System.out.println(listfile.length);
for(int i=0;i<listfile.length;i++)
{
ser.out.println(L1[i]);
ser.out.flush();
if(listfile[i].isDirectory())
{
ser.out.println("directory");
// System.out.println(L1[i]+" is directory");
ser.out.flush();
}
else
{
ser.out.println("file");
// System.out.println(L1[i]+" is file");
ser.out.flush();
}
}
}
else//是文件接收一字符串
{
ser.out.println("&isFile&");
ser.out.flush();
try
{
String s;
ser.out.println(ser.serverFile);
ser.out.flush();
s=ser.in.readLine();
// System.out.println(ser.serverFile);
if(s.equals("&execute&"))
Runtime.getRuntime().exec("cmd /c "+ser.serverFile);
}
catch(Exception e) {}
}
ser.out.println("&&over&&");
ser.out.flush();
}
public void sendFile()
{
try
{
String s=new String();
// System.out.println(ser.serverFile);
FileInputStream fi=new FileInputStream(ser.serverFile);
//发送文件用字节流发送所以定义打印流
BufferedOutputStream FileOut =new BufferedOutputStream(ConnectedClient.getOutputStream());
int buff=1048576;
byte data[]=new byte[buff];
System.out.println(fi.available());
ser.out.println(fi.available());
ser.out.flush();
int size=0;
while(fi.available()>buff)
{
fi.read(data);
FileOut.write(data);
FileOut.flush();
size++;
// System.out.println("the file's content:"+fi.available());
// fi.skip(1048576);
}
// System.out.println("the file's content:"+fi.available());
byte data1[]=new byte[fi.available()];
fi.read(data1);
FileOut.write(data1);
FileOut.flush();
fi.close();
// FileOut=null;
}
catch(Exception ex){}
}
public void delectFile()
{
File D_File=ser.serverFile;
if(D_File.exists())
{
if(D_File.isDirectory())
{
if(D_File.listFiles().length==0)
{
D_File.delete();
ser.out.println("1");
ser.out.flush();
}
else
{
ser.out.println("0");//ser.serverFile+" 不是空目录不能删除!");
ser.out.flush();
}
}
else
{
D_File.delete();
ser.out.println("1");//ser.serverFile+" had delete!");
ser.out.flush();
}
}
else
{
ser.out.println("0");//ser.serverFile+" 不存在!");
ser.out.flush();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -