중화사전망 - 자전 검색 - 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 ();

}

}

*/