[java] 소켓을 이용한 파일 전송 구현 방법

파일을 전송하고 받는 것은 네트워크 응용프로그램에서 일반적인 작업 중 하나입니다. 이를 위해 Java에서는 소켓을 사용하여 파일을 전송하는 것이 일반적입니다. 이번 블로그에서는 Java를 이용하여 파일을 전송하는 간단한 소켓 프로그램을 만드는 과정을 설명하겠습니다.

1. 클라이언트 소켓 구현

클라이언트 소켓을 구현하기 위해 SocketFileInputStream을 사용할 것입니다. 아래는 파일을 클라이언트로 전송하기 위한 간단한 Java 코드입니다.

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

public class FileClient {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("서버IP주소", 포트번호);
            File file = new File("전송할파일경로");
            byte[] byteArray = new byte[(int) file.length()];
            FileInputStream fileInputStream = new FileInputStream(file);
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
            bufferedInputStream.read(byteArray, 0, byteArray.length);
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(byteArray, 0, byteArray.length);
            outputStream.flush();
            socket.close();
            System.out.println("파일 전송 완료");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. 서버 소켓 구현

서버 소켓을 구현하기 위해 ServerSocketFileOutputStream을 사용할 것입니다. 아래는 클라이언트로부터 파일을 받아들이는 간단한 Java 코드입니다.

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

public class FileServer {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(포트번호);
            Socket socket = serverSocket.accept();
            byte[] byteArray = new byte[6022386];
            InputStream inputStream = socket.getInputStream();
            FileOutputStream fileOutputStream = new FileOutputStream("저장할파일경로");
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
            int bytesRead = inputStream.read(byteArray, 0, byteArray.length);
            bufferedOutputStream.write(byteArray, 0, bytesRead);
            bufferedOutputStream.flush();
            socket.close();
            serverSocket.close();
            System.out.println("파일 수신 완료");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 클라이언트와 서버 간의 파일 전송을 위해 소켓을 생성하고 파일을 스트림을 통해 전송합니다.

이제 간단한 Java를 사용하여 파일을 전송하는 소켓 프로그램을 만드는 방법에 대해 알아보았습니다. 위의 코드는 단순한 예시일 뿐이며, 실제 프로덕션 환경에서는 보안 및 예외 처리를 고려해야 합니다.

참고 자료

이상으로 Java를 이용한 파일 전송 소켓 구현 방법에 대해 알아보았습니다. 파일 전송에 관심이 있는 개발자라면 이를 응용하여 더 복잡하고 안전한 솔루션을 만들어볼 수 있을 것입니다.