자바 로 클 라 우 드 자원 공유 애플 릿 코드 구현

클 라 우 드 공유 애플 릿:
먼저 프로그램 기능 을 소개 합 니 다.다 중 사용자 가 자원 을 공유 하고 공유 서버 를 만 듭 니 다.서버 저장 소 는 자원 을 저장 할 수 있 고 사용 자 는 서버 에 파일 을 업로드 할 수 있 으 며 서버 에서 파일 을 다운로드 하여 다 중 사용자 가 자원 을 공유 하 는 기능 을 실현 할 수 있 습 니 다.
기술 창고
1.집합 프레임(맵 집합)
2.IO 흐름(대상 직렬 화,파일 전송 등)
3.다 중 스 레 드
4.네트워크 프로 그래 밍(TCP/IP 프로 토 콜)
5.간단 한 GUI 인터페이스
화면 효 과 를 살 펴 보 겠 습 니 다.(본인 은 분홍색 을 좋아 합 니 다.사용 자 는 색상 을 사용자 정의 할 수 있 습 니 다.)
在这里插入图片描述
클릭 하여 다운로드 후:
在这里插入图片描述
자세 한 내용 은 더 이상 설명 하지 않 습 니 다.프로그램 보기:서버:

package com.softeem.clound.server;

import java.io.File;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

import com.softeem.clound.ToolsAndUI.Tools;

/***
 *        :
 *            
 * @author gq
 *
 */
public class CloudServer extends Thread {
	/**     */
	private Socket s;
	/**   Map   */
	Map<String, File> map = new HashMap<String, File>();
	/**            (           ) */
	File file = new File("C:\\Users\\14252\\Desktop\\keepFiles");

	/**
	 *            
	 * 
	 * @param s
	 */
	public CloudServer(Socket s) {
		this.s = s;
	}

	@Override
	public void run() {
		File files[] = file.listFiles();
		//               
		for (File file : files) {
			map.put(file.getName(), file);
		}
		//            
		try {
			/*
			 * //          String msg = "        (       )";
			 * Tools.sendMsg(s.getOutputStream(), msg);
			 */
			//         
			String s1 = Tools.getMsg(s.getInputStream());
			//           
			if (s1.equals("1")) {
				Tools.tips("         !");
				downLoad();
			} else if ("2".equals(s1)) {
				Tools.tips("         !");
				upLoad();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}

	/**
	 *     
	 * 
	 * @throws IOException
	 */
	private void downLoad() throws IOException {
		/**
		 *             
		 */
		Tools.transObject(map, s.getOutputStream());
		//            (            ,    )
		String name = Tools.getMsg(s.getInputStream()).trim();
		//                
		File file = map.get(name);
		//         
		Tools.transFile(s.getOutputStream(), file);
		//               
		Tools.tips(file.getName() + ":    ");
		//            ,         
		s.shutdownOutput();
	}

	/**
	 *       
	 * 
	 * @throws IOException
	 * @throws ClassNotFoundException
	 */
	private void upLoad() throws ClassNotFoundException, IOException {
		//              
		Object obj = Tools.getObject(s.getInputStream());
		File f = (File) obj;
		//        
		file = new File(file, f.getName());
		//           
		Tools.sendMsg(s.getOutputStream(), "");
		//     
		Tools.getFile(s.getInputStream(), file);
		//               
		Tools.tips(file.getName() + "       ");
	}

	public static void main(String[] args) throws IOException {
		//        5555    
		ServerSocket server = new ServerSocket(5555);
		//             
		while (true) {
			//       
			Socket s = server.accept();
			//          ,        
			new CloudServer(s).start();
			//                     
			Tools.tips("         :" + s.getInetAddress().getHostAddress());
		}
	}

}
도구 종류:

package com.softeem.clound.ToolsAndUI;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
/**
 *    
 * @author 14252
 */
public class Tools {
	/**
	 * *                    
	 * @param os
	 * @param msg
	 * @throws IOException
	 */
	public static void Println(OutputStream os, String msg) throws IOException {

	}

	public static String getMsg(InputStream in) throws IOException {
		InputStreamReader isr = new InputStreamReader(in);
		BufferedReader br = new BufferedReader(isr);
		String s1 = null;
		s1 = br.readLine();
		return s1;
	}
	/**
	 *       
	 * 
	 * @param s
	 */
	public static void tips(String s) {
		System.out.println(s);
	}

	/**
	 *   (  )  
	 * @param os
	 * @param file
	 * @throws IOException
	 */
	public static void transFile(OutputStream os, File file) throws IOException {
		BufferedOutputStream fos = new BufferedOutputStream(os);
		byte b[] = new byte[1024];
		FileInputStream fis = new FileInputStream(file);
		int len = 0;
		while ((len = fis.read(b)) != -1) {
			fos.write(b, 0, len);
		}
		fos.flush();

	}

	/**
	 *     
	 * @param os
	 * @param msg
	 */
	public static void sendMsg(OutputStream os, String msg) {
		PrintWriter pw = new PrintWriter(os);
		pw.println(msg);
		pw.flush();
	}
 /**
 *     
 * @param in
 * @param file
 * @throws IOException
 */
	public static void getFile(InputStream in, File file) throws IOException {
		BufferedInputStream bu = new BufferedInputStream(in);
		int len = 0;
		byte b[] = new byte[1024];
		// System.out.println("    !");
		FileOutputStream fos = new FileOutputStream(file);
		while ((len = bu.read(b)) != -1) {
			fos.write(b, 0, len);
		}
		fos.flush();
	}
	/**
	 *              
	 * @param t
	 * @param os
	 * @throws IOException
	 */
	public static <T>void transObject(T t,OutputStream os) throws IOException{
		ObjectOutputStream oos=new ObjectOutputStream(os);
	 oos.writeObject(t);
	}
	/**
	 *                
	 * @param in
	 * @return
	 * @throws ClassNotFoundException
	 * @throws IOException
	 */
	public static Object getObject(InputStream in) throws ClassNotFoundException, IOException{
		ObjectInputStream ois = new ObjectInputStream(in);
		Object o= ois.readObject();
		return o;
	}
	
}
인터페이스

package com.softeem.clound.ToolsAndUI;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * JFrame  
 * 
 * @author 14252
 *
 */
public class MyJFrame extends JFrame {

	private static final long serialVersionUID = -82252562835060372L;
	//     
	public static JButton jb1 = new JButton("  ");
	public static JButton jb2 = new JButton("  ");
	public static JButton jbDown = new JButton("  ");
	public static JButton jbUp = new JButton("  ");
	//    
	public static JTextArea jt2 = new JTextArea();
	public static JTextArea jt = new JTextArea();
	public static JTextArea jt1 = new JTextArea();
	public static JScrollPane js = new JScrollPane();
	//   
	public static JLabel j1 = new JLabel("          ");
	public static JLabel j2 = new JLabel("        ");

	/**
	 *     
	 */
	public static void showJFrame() {
		JFrame jf = new JFrame();
		/**      */
		jf.setTitle("      mini ");
		jf.setSize(520, 700);
		jf.setLayout(null);
		jf.setVisible(true);
		jf.setResizable(false);
		//     
		Container c = jf.getContentPane();
		/**            */
		js.setBounds(50, 50, 400, 200);
		c.add(js);
		jt.setFont(new Font("", 20, 16));
		jt.setBounds(50, 50, 400, 200);
		js.setViewportView(jt);
		c.add(jt);
		/**          */
		jbDown.setBounds(50, 280, 100, 40);
		jbUp.setBounds(350, 280, 100, 40);
		c.add(jbUp);
		c.add(jbDown);
		/**     1     1    1 */
		jb1.setBounds(350, 350, 100, 40);
		c.add(jb1);
		j1.setBounds(50, 360, 300, 100);
		j1.setFont(new Font("", 20, 20));
		j1.setForeground(Color.RED);
		c.add(j1);
		jt1.setBounds(50, 350, 240, 40);
		jt1.setFont(new Font("", 18, 18));
		js.setViewportView(jt);
		c.add(jt1);
		/**     2     2    2 */
		jb2.setBounds(350, 500, 100, 40);
		c.add(jb2);
		jt2.setBounds(50, 500, 240, 40);
		c.add(jt2);
		j2.setBounds(50, 510, 300, 100);
		j2.setFont(new Font("", 20, 20));
		j2.setForeground(Color.RED);
		c.add(j2);
		jt2.setFont(new Font("", 17, 17));
		/**        */
		c.setBackground(Color.PINK);

	}
}
서버:

package com.softeem.clound.cilent;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import com.softeem.clound.ToolsAndUI.MyJFrame;
import com.softeem.clound.ToolsAndUI.Tools;

/**
 *    
 * 
 * @author gq
 */
public class CilentSharing {
	/**     */
	private Socket s;
	/**        */
	File file1;
	/**       (1    2   ) */
	String ss;
	/**    ip   */
	private String ip;
	/**        */
	private int port;

	public CilentSharing(File file1, String ip, int port) {
		this.file1 = file1;
		this.ip = ip;
		this.port = port;
	}

	public CilentSharing() {

	}

	/**
	 *        
	 * 
	 * @throws IOException
	 * @throws ClassNotFoundException
	 */
	private void choose() throws IOException, ClassNotFoundException {
		//   
		downLoad();
		//   
		upLoad();
	}

	/**
	 *     (        )
	 */
	private void downLoad() {
		//           
		MyJFrame.jbDown.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					s = new Socket(ip, port);
				} catch (IOException e2) {
					e2.printStackTrace();
				}
				//            (1,2)
				try {
					ss = "1";
					Tools.sendMsg(s.getOutputStream(), ss);
					//       
					new DownlownServer(s, file1).start();
					return;
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
	}

	/**
	 *       (        )
	 */
	private void upLoad() {
		MyJFrame.jbUp.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					MyJFrame.jt.setText("             !");
					s = new Socket(ip, port);
					//         
					ss = "2";
					Tools.sendMsg(s.getOutputStream(), ss);
					//       
					new UpServer(s).start();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
	}

	/**
	 *     
	 * 
	 * @throws ClassNotFoundException
	 * @throws IOException
	 */
	public static void main(String[] args) throws ClassNotFoundException, IOException {
		//     
		MyJFrame.showJFrame();
		//   
		MyJFrame.jt.setText("        !!!" + "
" + " :" + "
" + " " + ", " + "
" + " ( / )"); // ( ) File f = new File("C:\\Users\\14252\\Desktop\\ (4)"); // int port = 5555; // ip String ip = "192.168.0.102"; // new CilentSharing(f, ip, port).choose(); } }
클 라 이언 트 다운로드 서비스 스 레 드:

package com.softeem.clound.cilent;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

import com.softeem.clound.ToolsAndUI.MyJFrame;
import com.softeem.clound.ToolsAndUI.Tools;

/**
 *             
 * 
 * @author gq
 *
 */
public class DownlownServer extends Thread {
	/** socket    */
	Socket s;
	/**         */
	File file;
	/**       map   */
	Map<String, File> map;
	/**         */
	String msg;
	/**          */
	String show="";

	public DownlownServer(Socket s, File file) {
		this.s = s;
		this.file = file;
	}

	@Override
	public void run() {
		//           
		//       (  map  )
		Object obj = null;
		try {
			obj = Tools.getObject(s.getInputStream());
		} catch (ClassNotFoundException | IOException e2) {
			// TODO       catch  
			e2.printStackTrace();
		}
		//   Map  
		map = (HashMap<String, File>) obj;
		//              
		map.forEach((k, v) -> {
			show = show + "   : " + k + "
"; }); // MyJFrame.jt.setText(show); // MyJFrame.jb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // try { msg = MyJFrame.jt1.getText().trim(); // Tools.sendMsg(s.getOutputStream(), msg); // File f = new File(""); // f = file; file = new File(file, msg); // Tools.getFile(s.getInputStream(), file); MyJFrame.j1.setText(" !!!"); // file = f; // s.close; } catch (IOException e1) { e1.printStackTrace(); } } }); } }
클 라 이언 트 업로드 스 레 드:

package com.softeem.clound.cilent;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import java.util.Map;

import com.softeem.clound.ToolsAndUI.MyJFrame;
import com.softeem.clound.ToolsAndUI.Tools;

/***
 *     
 * @author 14252
 *
 */
public class UpServer extends Thread{
	/***/
	Socket s;
	File file;
	Map<String, File> map;
	String show;
	public UpServer(Socket s) {
		this.s = s;
	}
	@Override
	public void run() {
		MyJFrame.jb2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//         
				String content=MyJFrame.jt2.getText();
				file=new File(content);
				try {
					//               
					Tools.transObject(file, s.getOutputStream());
					//           
					Tools.getMsg(s.getInputStream());
					//      
					Tools.transFile(s.getOutputStream(), file);
					//           
					MyJFrame.j2.setText("    ");
					MyJFrame.jt.setText(file.getName()+"    !");
					//            ,         
					s.shutdownOutput();
				} catch (IOException e1) {
					e1.printStackTrace();
				} 
			}
		});
	}

}
요약:
이 작은 프로그램 은 종합 성 이 비교적 강하 기 때문에 코드 의 양 이 비교적 많 기 때문에 계속 다운로드 하거나 업로드 할 수 있 습 니 다.다 중 스 레 드 간 에 서로 영향 을 주지 않 습 니 다.다운로드 나 업 로드 를 클릭 할 때마다 하나의 스 레 드 를 만들어 다운로드 하거나 업로드 합 니 다.각 작업 간 에 서로 영향 을 주지 않 습 니 다.위의 프로그램 은 계속 확장 하고 최적화 할 수 있 습 니 다.예 를 들 어 진도 표시 등 입 니 다.홀 은 모든 사람 에 게 어떤 사용자 가 무엇 을 올 렸 는 지,무엇 을 다운로드 하 였 는 지 알려 주 었 으 며,여 기 는 더 이상 설명 하지 않 겠 습 니 다.
자바 로 클 라 우 드 자원 공유 애플 릿 을 작성 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 클 라 우 드 자원 공유 애플 릿 내용 에 대해 서 는 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기