[Java / 자바] 파일 전송 모듈

개발 노트/Java  2015.06.11 00:31

안녕하세요. 명월입니다.
이번 포스트는 파일 전송 모듈에 대해 작성해 보겠습니다.


파일을 전송하는 모듈은 뜻밖에 많이 사용하면서 딱 정의되어 있는 소스가 없는 것 같아서 제가 구현해 보았습니다. 물론 고수분들은 이런 게 필요 없겠지요...ㅜㅜ


제가 만들 파일 전송 모듈클래스는 총 7개로 이루어져 있습니다.



FileTransferAddress.java


클래스는 InetSocketAddress를 상속받았고, 역할은 클라이언트의 경우 접속 IP, Port 설정을 위해 필요한 클래스 입니다.


FileTransferBitConverter.java


Bitconverter는 숫자를 byte 형식 또는 byte형식을 숫자형식으로 변환시켜주는 Converter입니다. 예전 C#에 있는 클래스인데 아주 유용하게 쓰던 기억이 있어서 Java도 비슷하게 만들어서 가져왔습니다. 이 모듈에서의 역할은 파일의 사이즈를 상대 수신 쪽에 보내주기 위해 byte로 변환하는 클래스입니다.

FileTransferClient.java


이 모듈의 핵심 클래스입니다. 실제로 이 클래스에서 데이터 전송, 수신, 프로토콜이 정해지는 곳이라고 할 수 있네요.
멀티스레드 환경을 만들기 위해 Runnable을 상속받고 Socket을 상속받아서 사용법을 개선했네요.. 그냥 소켓처럼 사용하면 파일 송수신이 이루어지겠습니다.


FileTransferException.java


이 모듈의 예외 클래스입니다. SocketException 을 상속받아 사용하는데 실제 FileTransferException로 throw 구간이 없으니깐 어찌 보면 필요가 없는 클래스 입니다.


FileTransferListener.java

FileTransferListener클래스는 FileTransferClient클래스에서 사용되는 이벤트 리스너입니다. 다른 것은 그렇다 치더라고 progressFileSizeAction의 경우에는 파일이 전송 진행사항을 나타내는 함수입니다.


FileTransferServer.java

FileTransferServer.javas는 서버 클래스입니다. ServerSocket을 상속받아서 인터페이스는 ServerSocket과 같습니다. 기본적으로 생성자 선언(new)을 하면 바로 server대기 상태로 됩니다. 종료 부분이 아직 조금 미흡하네요
사용할 때는 이 종료 부분을 다듬어서 사용해야 하겠습니다.


FileTransferServerListener.java

여기까지 파일 전송 모듈을 만들었으면 이번에는 실행을 시켜 보겠습니다.




파일 전송 모듈을 통해 Client에서 서버쪽으로 t.zip을 전송하였습니다.


결과 확인


여기까지 제가 작성한 부분에서는 잘 되네요..


jar - FileTransfer.jar
소스 - FileTransfer.zip

댓글 1개가 달렸습니다.
댓글쓰기
  1. ㅎㅎ
    2017.06.01 15:47 신고 |  수정/삭제  댓글쓰기

    servermain먼저 실행하고 clinet 써야하나요