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

📄 ftpserver.java

📁 该源码非常好,是用最新JAVA写的,是最先进的编程方法
💻 JAVA
字号:
/*
*ReceiveThread线程负责接受请求并判断请求类型;
*SendThread线程负责发送数据给客户端,发送线程和接受线程通过管道通信;
*/
import java.net.*;
import java.io.*;

public class FtpServer
{	
	static ServerSocket ss;
	public static void main(String[] args){
		try{
			PipedOutputStream pos=new PipedOutputStream();
			PipedInputStream pis=new PipedInputStream(pos);
			DataInputStream dissc;
			DataOutputStream dossc;
			ss=new ServerSocket(4000);
			Socket sc=null;
			while (true){
				sc=ss.accept();
				dissc=new DataInputStream(sc.getInputStream());
				dossc=new DataOutputStream(sc.getOutputStream());
				ReceiveThread rt=new ReceiveThread(dissc,pos);
				SendThread st=new SendThread(dossc,pis);
				rt.start();
				Thread.sleep(1);
				st.start();
				Thread.sleep(1);
				System.out.println("Server is started!");
			}
		}catch(IOException e){
			System.out.println(e);
		}catch(InterruptedException e){
			System.out.println(e);
		}
	}	
}
class ReceiveThread extends Thread
{
	DataOutputStream dos;
	DataInputStream dissc;
	String message=null;
	String dir=null;
	public ReceiveThread(DataInputStream dissc,PipedOutputStream pos){
		this.dissc=dissc;
		dos=new DataOutputStream(pos);
	}
	public ReceiveThread(){
	}
	public void run(){
		
		String order=null;
		try{
				while(true){
					order=new String(dissc.readUTF());
					if(order.substring(0,4).equals("dire")){
						showDir(order.substring(4));
						dos.writeUTF(message);
						
					}
					if(order.substring(0,4).equals("down")){
						readFile(dir+"\\"+order.substring(4));
						
					}
				}
				
		}catch(IOException e){
			System.out.println("HHHH");
		}
	}
	public void showDir(String d){
		File f=null;
		String[] list=null;
		if(dir==null){
			dir=d;
		}
		
		else
			dir+="\\"+d;

		f=new File(dir);
		list=f.list();
		message="[dire]";
		for(int i=0;i<list.length;i++){
			File file=new File(list[i]);
			if(!file.isHidden()){
				message+="   "+list[i]+"\n";
			}
		}

	}
	public void readFile(String fileName){
		boolean copy=true;
		String filePath=fileName;
		String file=null;
		File f=new File(filePath);
		BufferedReader br=null;
		try{
			br=new BufferedReader(new FileReader(f));
		}catch(FileNotFoundException e){
		}
		while(copy){
			try{
				file=br.readLine();
				if(file==null){
					copy=false;
				}
				else{
					System.out.println("[file]"+file);
					dos.writeUTF("[file]"+file);
					//dos.flush();
				}
			}catch(IOException e){
			}
		}
	}
}
class SendThread extends Thread
{
	PipedInputStream pis;
	DataOutputStream dossc;
	String message;
	public SendThread(DataOutputStream dossc,PipedInputStream pis){
		this.pis=pis;
		this.dossc=dossc;
	}
	public SendThread(){
	}
	public void run(){
		try{
				DataInputStream dispis=new DataInputStream(pis);
				while(true){
					message=dispis.readUTF();
					System.out.println("Send:"+message);
					dossc.writeUTF(message);
				}
		}catch(IOException e){
		}
	}
}

⌨️ 快捷键说明

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