중화사전망 - 자전 검색 - JAVA 소켓을 사용하여 파일 전송 정보
JAVA 소켓을 사용하여 파일 전송 정보
/*
Java.io. *;
Java.net 을 가져옵니다. *;
Java.util. *;
*/
개인 httpurl 연결 연결; //스토리지 접속
Private intdownsize =-1; //다운로드 파일 크기, 초기 값은-1 입니다.
Private intdowned = 0; //문가의 다운로드 크기, 초기값은 0 입니다.
Private random access file save file : //다운로드 정보 저장소 파일 기록
개인 URL 파일 URL// 다운로드할 파일의 주소를 기록합니다.
개인 데이터 inputstream 파일 스트림; //다운로드한 데이터 스트림 기록
시도 {
/* 다운로드한 스토리지 파일 생성 시작 및 값 초기화 */
Filetempfileobject = newfile ("h: \ \ webwork-2.1.7.zip");
만약 (! Tempfile object. exists()){
/* 파일이 없으면 생성 */
Tempfileobject.createnewfile ();
}
Save file = new random access file (tempfile object, "rw");
/* 연결 설정 */
Fileurl = 새 URL ("/files/documents/693/9723/webwork-2.1.7.zip");
Connection = (httpurlconnection) fileurl.openconnection ();
Connection.setrequestproperty ("range", "byte ="+this.downed+"-");
This.downsize = connection.getcontentlength ();
//system.out.println (connection.getcontentlength ());
새 스레드 (this). 시작 ();
}
캡처 (예외 e ){
System.out.println (e.tostring ());
System.out.println ('생성기 오류');
System.exit (0);
}
공용 void 실행 () {
/* 파일 다운로드를 시작합니다. 다음 테스트는 중단점 없이 계속됩니다. 다운로드한 파일에 문제가 있습니다 */
시도 {
System.out.println ("begin! );
Date begin time = new date ();
Begintime.setTime (새 날짜 (). GetTime()););
Byte [] file byte;
Int onecelen
//system.out.println (this.connection.getinputstream ()). GetClass () 를 사용합니다. GetName()););
This.filestream = new data inputstream (
새 버퍼 입력 흐름 (
This.connection.getinputstream ());
System.out.println ("size ="+this.downsize ");
동시에 (this.downsize! = this. downed ){
This.downsize-this.down > 262 144){// 최대 캐시 설정은 256KB 입니다.
Filebyte = 새 바이트 [262144];
Onecelen = 262144;
}
그렇지 않으면 {
File byte = new byte [this.downsize-this.downed];
Onecelen = this.downsize-this.down;
}
Onecelen = this.filestream.read (filebyte, 0, onecelen);
This. save file. write(file byte, 0, onecelen);
This.downed+= onecelen;
System.out.println (this.downed);
}
This.savefile.close ();
System.out.println ("end! );
System.out.println (begintime.gettime ());
System.out.println (새 날짜 (). GetTime()););
System.out.println (begintime.gettime ()-새 날짜 (). GetTime()););
}
캡처 (예외 e ){
System.out.println (e.tostring ());
시스템. Out.println ("run () 메서드에 문제가 있습니다! );
}
}
/* * *
//FileClient.java
Java.io. *;
Java.net 을 가져옵니다. *;
공용 클래스 파일 클라이언트 {
공용 정적 voidmain (string [] args) 에서 예외 발생 {
//로컬 파일 시스템을 사용하여 네트워크 데이터를 수락하고 새 파일로 저장합니다.
File file = 새 파일 ("d: \ \ fmd.doc");
File.createnewfile ();
Random access file RAF = new random access file (파일, "rw");
//소켓을 통해 파일 서버에 연결합니다.
소켓 서버 = newsocket (inetaddress.getlocalhost (), 3318);
//서버 파일 데이터를 수락하는 네트워크 수락 스트림 만들기
Inputstreamnetin = server.getinputstream ();
Inputstream in = new data inputstream (new buffered inputstream (netin));
//네트워크 데이터를 버퍼링하는 버퍼 생성
Byte [] buf = 새 바이트 [2048];
Intnum = in.read (buf);
While(num! =(- 1)){// 데이터를 다 읽었습니까?
RAF. write(buf, 0, num); //파일에 데이터 쓰기
Raf.skipbytes (num); //파일 바이트를 순서대로 씁니다
Num = in.read (buf); //네트워크에서 파일 읽기를 계속합니다.
}
In.close ();
Raf.close ();
}
}
//FileServer.java
Java.io. *;
Java.util. *;
Java.net 을 가져옵니다. *;
공용 클래스 파일 서버 {
공용 정적 voidmain (string [] args) 에서 예외 발생 {
//파일 스트림을 만들어 파일의 데이터를 읽습니다.
File file = 새 파일 ("d:\\ 시스템 기능. Doc ");
File inputstream fos = new file inputstream (file);
//고객 요청을 수락하는 웹 서버를 만듭니다.
Server socket ss = new server socket (8801);
소켓 클라이언트 = ss.accept ();
//네트워크 출력 스트림을 만들고 데이터 패키지를 제공합니다.
Outputstreamnetout = client.getoutputstream ();
출력 스트림 문서 = 새 데이터 출력 스트림 (
New buffered output stream (netout));
//파일 읽기 버퍼 만들기
Byte [] buf = 새 바이트 [2048];
Intnum = fos.read (buf);
While(num! =(- 1)){// 파일 다 읽었습니까?
Doc. write(buf, 0, num); //네트워크 버퍼에 파일 데이터 쓰기
Doc.flush (); //버퍼를 플러시하여 클라이언트에 데이터를 씁니다.
Num = fos.read (buf); //파일에서 데이터 읽기를 계속합니다
}
Fos.close ();
Doc.close ();
}
}
*/