ネットワークプログラミング_TCPプロトコルのファイルアップロード
1、需要分析:
①クライアントがサービス側にテキストファイルをアップロードする
②サービス側はファイルを受け取った後、終了情報をフィードバックし、「受信データ成功」を印刷する
③クライアントがサービス側からのフィードバックを受けた後、「アップロードファイル成功」を印刷する
2、クライアント:
①Socket、ファイル入力フロー、Socket出力フロー、Socket入力フローの定義
②ファイル入力ストリームからファイルを読み取る、
③読み込んだデータをSocket出力ストリームに書き込む
④リソースのクローズ
詳細はコードコメントを参照してください.
3、サービス側:
①、リソースの定義:ServerSocket、ストリーム
②クライアントからデータを受信し、ファイルに書き込む
③受信後、クライアントに「success」をフィードバック
④リソースのクローズ
詳細については、コード注記を参照してください.
①クライアントがサービス側にテキストファイルをアップロードする
②サービス側はファイルを受け取った後、終了情報をフィードバックし、「受信データ成功」を印刷する
③クライアントがサービス側からのフィードバックを受けた後、「アップロードファイル成功」を印刷する
2、クライアント:
①Socket、ファイル入力フロー、Socket出力フロー、Socket入力フローの定義
②ファイル入力ストリームからファイルを読み取る、
③読み込んだデータをSocket出力ストリームに書き込む
④リソースのクローズ
詳細はコードコメントを参照してください.
package day23.fileUpload;
import java.net.*;
import java.io.*;
/**
* @author Administrator @zsw 2012-7-18 09:21:04
*
* :
*
* :
* ① Socket、 、Socket 、Socket
* ② ,
* ③ Socket
* ④
*/
public class FileClient {
public static void main(String[] args) throws Exception{
//①:
Socket s=new Socket("127.0.0.1",10006);
BufferedReader bufr=new BufferedReader(new FileReader("D:\\1.txt"));
//
BufferedWriter bufout=new BufferedWriter(
new OutputStreamWriter(s.getOutputStream()));
// PrintWriter out=new PrintWriter(s.getOutputStream(),true);
BufferedReader bufin=new BufferedReader(
new InputStreamReader(s.getInputStream()));
//②
String line=null;
while((line=bufr.readLine())!=null){
System.out.println(line);
bufout.write(line);
bufout.newLine();
bufout.flush();
}
//③ , 。
s.shutdownOutput();// , -1
String line2=null;
while((line2=bufin.readLine())!=null){
if("success".equals(line2)){
System.out.println(" !");
break;
}
}
//④
bufr.close();
s.close();
}
}
3、サービス側:
①、リソースの定義:ServerSocket、ストリーム
②クライアントからデータを受信し、ファイルに書き込む
③受信後、クライアントに「success」をフィードバック
④リソースのクローズ
詳細については、コード注記を参照してください.
package day23.fileUpload;
import java.io.*;
import java.net.*;
/**
* @author Administrator @zsw 2012-7-18 09:43:46
*
* :
* 1、 :ServerSocket、
* 2、 ,
* 3、 , "success"
* 4、
*
* :
* ① readLine ,
*
* ② , ,
* s.shutdownOutput() , Socket shutdownOutput
* -1, readLine()=null,
*/
public class FileServer {
public static void main(String[] args) throws Exception {
//①
ServerSocket ss=new ServerSocket(10006);
Socket s=ss.accept();
//
BufferedWriter bufw=new BufferedWriter(new FileWriter("D:\\tx\\1.txt"));
//Socket
BufferedReader bufin=new BufferedReader(
new InputStreamReader(s.getInputStream()));
BufferedWriter bufout=new BufferedWriter(
new OutputStreamWriter(s.getOutputStream()));
String ip=s.getLocalAddress().getHostAddress();
System.out.println(ip+" ....connnect ");
//②: 、 、 、
String line=null;
/*
* line=null ,
* s.shutdownOutput();
* , -1,line =null
*/
// ( )
while((line=bufin.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
System.out.println(" !");
bufout.write("success");
bufout.newLine();
bufout.flush();
s.shutdownOutput();
//
bufw.close();
s.close();
ss.close();
}
}
4、
① readLine , , , 。
② , , ,
s.shutdownOutput() , Socket shutdownOutput -1, readLine()=null,