반응형

FileSendClient.java


import java.io.*;
import java.net.*;
import java.util.*;


public class FileSendClient {

	public static void main(String[] args) {
		// 파일이름을 입력받기 위한 변수
		Scanner scanner = new Scanner(System.in);
		System.out.println("전송할 파일이름 : ");
		
		// 전송할 곳의 주소를 저장할 변수
		String ip = "127.0.0.1";
		// 파일명을 저장할 변수
		String filename = null;
		// 파일의 내용을 읽을 변수
		DataInputStream dis = null;

		// 파일 이름 입력 받기
		filename = scanner.next();
		
		// 입력 받은 이름으로 file 객체 생성
		File file = new File(filename);
		
		// 파일이 없다면 프로그램 종료
		if(file.exists() == false){
			System.out.println("파일이 존재하지 않습ㄴ디ㅏ");
			System.exit(0);
		}
	
		try{
			
			// UDP 소켓 생성
			DatagramSocket socket = new DatagramSocket();
			// 전송할 곳이 주소생성
			InetAddress ia = InetAddress.getByName("127.0.0.1");
			// 파일 전송하기 위해 start라는 문자열 전송
			String str = "start";
			// 전송할 객쳋 생성
			DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length);
			// 전송
			socket.send(dp);
			
			// 파일의 냉ㅇ을 저장할 배열
			byte [] by = new byte[512];
			
			// 모든 내용을 읽어서 전송
			while(true){
				int xx = dis.read(by, 0, by.length);
				if(xx == -1)
					break;
					dp = new DatagramPacket(by, xx , ia , 9875);
				
				str = "end";
				dp = new DatagramPacket(str.getBytes(), str.getBytes().length,ia,9876);
				socket.send(dp);
			
				dis.close();
				socket.close();
			}
		}catch(Exception e){
			System.out.println(e.getMessage());
			}
	}

}



FileReceiveServer.java



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


public class FileReceiveServer {

	public static void main(String[] args) {
		// 문자열로 이루어진 파일을 전송받는 프로그랭
		
		// 전송받을 UDP 소켓을 생성
		try {
			DatagramSocket socket = new DatagramSocket(9875);
			System.out.println("수신 준비 완료.......");
			
			// 전송받은 내용을 저장할 함수
			File file = null;
			// 데이터를 전송받을 Stream 변수
			DataOutputStream dos = null;
			
			while(true){
				// 전송받을 데이터 패킷 생성
				DatagramPacket dp = new DatagramPacket(new byte[512], 512);
				// 데이터 전송받기
				socket.receive(dp);
				// 전송받은 데이터 를 문자열료 변환
				String str = new String(dp.getData()).trim();
				// 전송받은 문자열이 strat 라면 받으룬비
				if(str.equals("start")){
					System.out.println(" 전송 시작  ");
					// 파일 객체 생성
					file = new File("c://download//a.txt");
					// 파일 쓰기 객체 새엉
					dos = new DataOutputStream(new BufferedOutputStream(
							new FileOutputStream(file)));
					}
					//end가 ㅇ면 종료
					else if(str.equals("end")){
						System.out.println("전송완료");
						socket.close();break;
						
					}
					else{
						// dos에 연결된 파일에 str의 바이ㅌ 배열은 0부터 부ㅜ터 길이많큼 기록
						dos.write(str.getBytes(),0,str.getBytes().length);
					}
					
				}	
				dos.close();
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		

	}

}



+ Recent posts