자바 로 클 라 우 드 자원 공유 애플 릿 코드 구현
17263 단어 자바클 라 우 드 자원공유 애플 릿
먼저 프로그램 기능 을 소개 합 니 다.다 중 사용자 가 자원 을 공유 하고 공유 서버 를 만 듭 니 다.서버 저장 소 는 자원 을 저장 할 수 있 고 사용 자 는 서버 에 파일 을 업로드 할 수 있 으 며 서버 에서 파일 을 다운로드 하여 다 중 사용자 가 자원 을 공유 하 는 기능 을 실현 할 수 있 습 니 다.
기술 창고
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();
}
}
});
}
}
요약:이 작은 프로그램 은 종합 성 이 비교적 강하 기 때문에 코드 의 양 이 비교적 많 기 때문에 계속 다운로드 하거나 업로드 할 수 있 습 니 다.다 중 스 레 드 간 에 서로 영향 을 주지 않 습 니 다.다운로드 나 업 로드 를 클릭 할 때마다 하나의 스 레 드 를 만들어 다운로드 하거나 업로드 합 니 다.각 작업 간 에 서로 영향 을 주지 않 습 니 다.위의 프로그램 은 계속 확장 하고 최적화 할 수 있 습 니 다.예 를 들 어 진도 표시 등 입 니 다.홀 은 모든 사람 에 게 어떤 사용자 가 무엇 을 올 렸 는 지,무엇 을 다운로드 하 였 는 지 알려 주 었 으 며,여 기 는 더 이상 설명 하지 않 겠 습 니 다.
자바 로 클 라 우 드 자원 공유 애플 릿 을 작성 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 클 라 우 드 자원 공유 애플 릿 내용 에 대해 서 는 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.