BBS > java

파일 받기 (수정)

작성자 : 이창우 (x1wins) | 등록일 : 2011-06-07 | 목록
첨부 파일이 없습니다.
첨부 이미지가 없습니다.
package server.file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class FileServer {

	public static void main(String[] args) {
		int port = 10000;

		try {
			ServerSocket ss = new ServerSocket(port);
			System.out.println("This server is listening... (Port: " + port
					+ ")");
			Socket socket = ss.accept();
			InetSocketAddress isaClient = (InetSocketAddress) socket
					.getRemoteSocketAddress();
			String clientAddress = isaClient.getAddress().getHostAddress();
			int clientPort = isaClient.getPort();

			System.out.println("A client is connected. (" + clientAddress + ":"
					+ clientPort + ")");

			// String filename = "test2.txt";
//			String filename = "c:\\temp\\test2.avi";
			String fileName = "test3.exe";
			File f = new File("c:\\temp\\", fileName);
			FileOutputStream fos = new FileOutputStream(f);

			InputStream is = socket.getInputStream();

			// int c;
			// while ((c = is.read()) != -1) {
			// // System.out.println("readByte: " + readByte);
			//
			// fos.write(c);
			// }

			byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE];
			int readBytes;
			while ((readBytes = is.read(buffer)) != -1) {
				fos.write(buffer, 0, readBytes);
			}

			System.out.println("File transfer completed.");

			is.close();
			fos.close();

			socket.close();
			ss.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
package server.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;

public class FileClient {

	public static void main(String[] args) {
		String host = "localhost";
		int port = 10000;

		// String filename = "test.txt";
//		String filename = "test.avi";
		String filename = "C:\\Users\\Rhee\\Downloads\\ChromeSetup.exe";
		File file = new File(filename);
		long fileSize = file.length();
		System.out.println("File size: " + (fileSize) + " Byte(s)");

		try {
			long startTime = System.currentTimeMillis();
			System.out.println("Start time: " + new Date());

			FileInputStream fis = new FileInputStream(file);

			System.out.println("This client is connecting to " + host + ":"
					+ port + "...");
			Socket socket = new Socket(host, port);
			System.out.println("This client is Connected.");

			OutputStream os = socket.getOutputStream();

			// int c;
			// while ((c = fis.read()) != -1) {
			// os.write(c);
			// }

			long totalReadBytes = 0;

			byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE];
			int readBytes;
			while ((readBytes = fis.read(buffer)) > 0) {
				os.write(buffer, 0, readBytes);

				totalReadBytes += readBytes;
				System.out.println("In progress: " + totalReadBytes + "/"
						+ fileSize + " Byte(s) ("
						+ (totalReadBytes * 100 / fileSize) + " %)");
			}

			System.out.println("File transfer completed.");

			fis.close();

			os.close();
			socket.close();

			long endTime = System.currentTimeMillis();
			System.out.println("End time: " + new Date());

			long diffTime = endTime - startTime;
			long diffTimeInSeconds = diffTime / 1000;
			System.out.println("Elapsed time: " + diffTimeInSeconds
					+ " second(s)");

//			System.out.println("Average transfer speed: " + (fileSize / 1000) / diffTimeInSeconds + " KB/s");
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
package server.file;

public class Constants {

	public static int DEFAULT_BUFFER_SIZE = 1024;
}
다시 수정함

핵심

InputStream으로 받아서 아래 처럼 while로 돌려 ㅇㅋ?

byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE];
int readBytes;
while ((readBytes = is.read(buffer)) != -1) {
fos.write(buffer, 0, readBytes);
}
로그인 하셔야 댓글을 사용하실수 있습니다.
댓글쓰기를 누르면 로그인 페이지로 이동 후 돌아옵니다.
총 댓글 겟수 0
번호 제목 등록일 작성자 조회수
671 struts2 intercept (0) 2014-12-29 이창우 1593
670 Reflection (0) 2014-07-07 이창우 2037
665 Timestamp <-> Date (0) 2014-04-02 이창우 2201
664 변환 date ->java.sql.date (0) 2014-03-24 이창우 2073
663 Unparseable date: "" (0) 2014-03-24 이창우 2999
659 Java Primitive Data Types (0) 2014-02-14 이창우 2467
568 abstract interface 차이점 (0) 2012-09-24 이창우 1368
418 Triple DES & DES JAVA ,C (0) 2011-12-26 이창우 2782
403 HttpClient (0) 2011-12-10 이창우 2618
220 콘솔에서 war 만들기 (0) 2011-07-13 이창우 3136
210 servlet 현재 주소 알아오기 (0) 2011-07-09 이창우 2283
188 A Java Runtime (0) 2011-06-27 이창우 2217
173 file 복사 (0) 2011-06-07 이창우 2064
-> 파일 받기 (수정) (0) 2011-06-07 이창우 2313
170 파일 받기 (안됨) (0) 2011-06-07 이창우 1848
169 소켓으로 파일 받기(안됨) (0) 2011-06-07 이창우 2077
162 RCP Example (0) 2011-06-03 이창우 1905
161 rcp 설명 사이트 (1) 2011-06-03 이창우 2143
160 Thread Chatting 프로토 타입 2 (1) 2011-06-02 이창우 1755
158 object heap (0) 2011-06-01 이창우 1987
< 1 2 >
글쓰기 검색