자바 TCP 연결 클 라 이언 트 서버 에 파일 업로드

UpdateClient.java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class UpdateClient {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws UnknownHostException 
	 */
	public static void main(String[] args) throws UnknownHostException, IOException {
		// 1.            ,                 
		File file = getFile();
		// 2.         
		Socket socket = new Socket("127.0.0.1", 6666);
		BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		PrintStream ps = new PrintStream(socket.getOutputStream());
		ps.println(file.getName());
		// 6.    ,         ,       
		String result = br.readLine();						//           
		if("  ".equals(result)) {
			System.out.println("          ,       ");
			socket.close();
			return;
		}
		// 7.     ,   FileInputStream    ,      
		FileInputStream fis = new FileInputStream(file);
		byte[] arr = new byte[8192];
		int len;
		
		while((len = fis.read(arr)) != -1) {
			ps.write(arr, 0, len);
		}
		
		fis.close();
		socket.close();
	}

	private static File getFile() {
		Scanner sc = new Scanner(System.in);				//        
		System.out.println("         :");
		
		while(true) {
			String line = sc.nextLine();
			File file = new File(line);
			if(!file.exists()) {
				System.out.println("           ,     :");
			}else if(file.isDirectory()) {
				System.out.println("          ,         :");
			}else {
				return file;
			}
		}
	}
}

UpdateServer.java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class UpdateServer {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//3,         
		ServerSocket server = new ServerSocket(6666);
		System.out.println("     ,  6666   ");
		
		//4.     
		while(true) {
			final Socket socket = server.accept();					//    
			new Thread() {
				public void run() {
					try {
						InputStream is = socket.getInputStream();
						BufferedReader br = new BufferedReader(new InputStreamReader(is));
						PrintStream ps = new PrintStream(socket.getOutputStream());
						String fileName = br.readLine();
						
						//5.        ,         
						File dir = new File("update");
						dir.mkdir();								//     
						File file = new File(dir,fileName);			//   File  
						
						if(file.exists()) {							//             
							ps.println("  ");						//        
							socket.close();							//  socket
							return;
						}else {
							ps.println("   ");
						}
						
						//8.  FileOutputStream,        ,      
						FileOutputStream fos = new FileOutputStream(file);
						byte[] arr = new byte[8192];
						int len;
						while((len = is.read(arr)) != -1) {
							fos.write(arr, 0, len);
						}
						fos.close();
						socket.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}.start();
		}
	}
}

좋은 웹페이지 즐겨찾기