728x90
package kr.or.ddit.basic.tcp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpFileServer {
public static void main(String[] args) throws IOException {
File saveDir = new File("D:/D_Other/uploadFiles"); //저장할 폴더 정보를 갖는 File객체 생성
if(!saveDir.exists()) { //저장할 폴더기ㅏ 없으면 폴더를 새로 생성한다.
saveDir.mkdir();
}
ServerSocket server = new ServerSocket(7777);
System.out.println("서버가 준비되었습니다.");
Socket socket = server.accept(); //클라이언트의 연결 요청을 기다린다.
System.out.println("파일 다운로드 시작...");
// 클라이언트가 첫번째로 보낸 '파일명'데이터를 받는다.
DataInputStream din = new DataInputStream(socket.getInputStream());
String fileName = din.readUTF();
//저장할 폴더와 클라이언트가 보내온 파일명을 지정하여 File객체를 생성한다.
File saveFile = new File(saveDir, fileName);
//소캣으로 읽어서 파일로 저장하기
BufferedInputStream bin = new BufferedInputStream(din);
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(saveFile));
//소켓으로 읽어온 데이터를 파일로 저장하기
byte[] temp = new byte[1024];
int length = 0;
while((length = bin.read(temp))>0) {
bout.write(temp, 0, length);
}
bout.flush();
System.out.println("파일 다운로드 완료...");
//스트림 객체 닫기
bin.close();
bout.close();
socket.close();
server.close();
}
}
'JAVA > NetworkTest' 카테고리의 다른 글
자바Network (TCP) TcpMultiChatServer (멀티채팅) (0) | 2023.06.30 |
---|---|
자바Network (TCP) TcpMultiChatClient (멀티채팅) (0) | 2023.06.30 |
자바Network (TCP) TcpFileClient (0) | 2023.06.30 |
자바Network (TCP) TcpClient02 (0) | 2023.06.30 |
자바Network (TCP) TcpClient01 (0) | 2023.06.30 |