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

📄 serverconnect.java

📁 NAS文件器的模拟
💻 JAVA
字号:
package server;

import java.net.*;
import java.io.*;
import fileSystem.*;

public class ServerConnect{
	private ServerSocket server;
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	private MyFileSystem myFS;
	
	public ServerConnect(){
		try{
			server = new ServerSocket(4600);
			socket=server.accept();
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out = new PrintWriter(socket.getOutputStream(),true); 
			System.out.println("server built successfully");
			myFS = new MyFileSystem();
		}catch(IOException e){
			
		}
	}
	
	public void SeverFuc(){
		try{
		String str=in.readLine();
		while(!str.equals("quit")){
			if(str.equals("login")){
				String name=in.readLine();
				String pwd=in.readLine();
				ClientID id = VirtualData.getID("Login", name, pwd);
				if (id == null) {
					out.println("false");
				}
				else {
					out.println("true");
					out.println(id.returnUID());
					out.println(id.returnGID());
				}
			}
			else if (str.equals("check_id")){
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int uid = Integer.valueOf(in.readLine());
				int gid = Integer.valueOf(in.readLine());
				int iNodeNumber = myFS.getINodeNumber(path);
				boolean ok = VirtualData.checkID(iNodeNumber, uid, gid);
				if (ok) {
					out.println("true");
				}
				else {
					out.println("false");
				}
			}
			else if (str.equals("check_gid")){
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int gid = Integer.valueOf(in.readLine());
				int iNodeNumber = myFS.getINodeNumber(path);
				boolean ok = VirtualData.checkGID(iNodeNumber,gid);
				if (ok) {
					out.println("true");
				}
				else {
					out.println("false");
				}
			}
			else if(str.equals("file_creat")){
				String name=in.readLine();
				String pathName = in.readLine();
				Path path = null;
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int uid = Integer.valueOf(in.readLine());
				int gid = Integer.valueOf(in.readLine());
				int i = myFS.fileCreat(name, path, uid, gid);
				out.println(String.valueOf(i));
			}
			else if(str.equals("file_open")){
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int gid = Integer.valueOf(in.readLine());
				FileINode fileINode = myFS.fileOpen(path);
				if (fileINode != null){
					out.println("true");
					out.println(fileINode.getName());
					out.println(String.valueOf(fileINode.getLength()));
					out.println(fileINode.getCreatTime());
					out.println(fileINode.getAccessTime());
					out.println(fileINode.getAmendTime());
				}
				else {
					out.println("false");
				}
			}
			else if(str.equals("file_rename")){
				String newName=in.readLine();
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				String oldName = in.readLine();
				int uid = Integer.valueOf(in.readLine());
				int gid = Integer.valueOf(in.readLine());
				int get = myFS.fileRename(oldName, newName, path);
				out.println(String.valueOf(get));
			}
			else if(str.equals("file_delete")){
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int uid = Integer.valueOf(in.readLine());
				int gid = Integer.valueOf(in.readLine());
				boolean ok = myFS.fileDelete(path);
				if (ok) {
					out.println("true");
				}
				else {
					out.println("false");
				}
			}
			else if(str.equals("file_write")){
				int size = Integer.valueOf(in.readLine());
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int uid = Integer.valueOf(in.readLine());
				int gid = Integer.valueOf(in.readLine());
				boolean ok = myFS.fileWrite(size, path);
				if (ok) {
					out.println("true");
				}
				else {
					out.println("false");
				}
			}
			else if(str.equals("dir_creat")){
				Path path = null;
				String dirName = in.readLine();
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				int i = myFS.dirCreat(dirName, path);
				out.println(String.valueOf(i));
			}
			else if(str.equals("dir_delete")){
				Path path = null;
				String pathName = in.readLine();
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				boolean ok = myFS.dirDelete(path);
				if (ok) {
					out.println("true");
				}
				else {
					out.println("false");
				}
			}
			else if(str.equals("dir_open")){
				String pathName = in.readLine();
				Path path = null;
				while(!pathName.equals("end_end")){					
					if (path == null) {
						path = new Path(pathName);
					}
					else {
						path.addPath(pathName);
					}
					pathName = in.readLine();
				}
				CatalogueItem ci = myFS.dirOpen(path);
				if (ci != null) {
					out.println("true");
				}
				else {
					out.println("false");
				}
				for (CatalogueItem c = ci; c!=null; c=c.getTail()){
					out.println(c.getName());
					out.println(c.getCreatTime());
					out.println(c.getAccessTime());
					if (c.getIsDir().equals("true")) {
						out.println("directory");
					}
					else {
						out.println("file");
					}
				}
				out.println("end_end");
			}
			str=in.readLine();
		}
		server.close();
		socket.close();
		in.close();
		out.close();
		}catch(IOException e){
			
		}
	}
	
	public static void main(String[] args){
	    ServerConnect server=new ServerConnect();
	    server.SeverFuc();		
	}	
}

⌨️ 快捷键说明

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