| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package kr.co.swh.lecture.network.filetrans;
-
- 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;
-
- /**
- * <pre>
- * kr.co.swh.lecture.network.filetrans
- * FileReceiveServer.java
- *
- * 설명 :파일 전송 서버
- * </pre>
- *
- * @since : 2018. 12. 28.
- * @author : tobby48
- * @version : v1.0
- */
- public class FileReceiveServerTCP {
-
- public static void main(String[] args) {
- ServerSocket serverSocket = null;
- Socket socket = null;
- String filename = "C:\\Users\\tobby48\\receive-data.txt";
- try {
- // 리스너 소켓 생성 후 대기
- serverSocket = new ServerSocket(8081); // socket(),bind();
-
- // 연결되면 통신용 소켓 생성
- socket = serverSocket.accept(); // listen(),accept();
- long start = System.currentTimeMillis();
- // 파일 수신 작업 시작
- FileReceiver fr = new FileReceiver(socket,filename,start);
- fr.start();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- }
-
- class FileReceiver extends Thread {
- Socket socket;
- DataInputStream dis;
- FileOutputStream fos;
- BufferedOutputStream bos;
- String filename;
- long start;
- int control = 0;
- public FileReceiver(Socket socket,String filestr,long starttime) {
- this.socket = socket;
- this.filename = filestr;
- this.start = starttime;
- }
-
- @Override
- public void run() {
- try {
- dis = new DataInputStream(socket.getInputStream());
-
- String fName = filename;
-
- // 파일을 생성하고 파일에 대한 출력 스트림 생성
- File f = new File(fName);
- fos = new FileOutputStream(f);
- bos = new BufferedOutputStream(fos);
-
-
- // 바이트 데이터를 전송받으면서 기록
- int len;
- int size = 4096;
- byte[] data = new byte[size];
- while ((len = dis.read(data)) != -1) {
- control++;
- if(control % 10000 == 0)
- {
- System.out.println("수신중..." + control/10000);
- }
- bos.write(data, 0, len);
- }
- long end = System.currentTimeMillis();
- System.out.println( "Elapsed Time (seconds) : " + ( end - start )/1000.0 );
- bos.flush();
- bos.close();
- fos.close();
- dis.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
|