この例では、Java実装クライアントの特定のコードを共有して、参照のためにサーバーにファイルを送信します。特定のコンテンツは次のとおりです
サーバーソースコード:
java.io.bufferedreaderをインポートします。 java.io.fileをインポートします。 java.io.filenotfoundexceptionをインポートします。 java.io.fileoutputStreamをインポートします。 java.io.ioexceptionをインポートします。 java.io.inputStreamReaderをインポートします。 java.net.serversocketをインポートします。 java.net.socketをインポートします。 /***ファイル名:ServerReceive.java*実装関数:サーバーとして、クライアントが送信したファイルを受信**特定の実装プロセス:*1。SocketServerを確立し、クライアントが接続するのを待ちます* 2。通信*4。ループ内のデータパケットを受信し、データパケットをファイルに書き込みます* 5。受信したデータの長さが事前にファイルによって送信されたファイルの長さに等しい場合、ファイルが受信され、ファイルの受信作業が終了したことを意味します。 Outflowは、独自のプログラムに従って単独で配置できます] * * *著者:Xiaoqiu *作成時間:2014-08-19 * * */ public class serverReceive {public static void main(String [] args){/ **サーバーとの接続を確立するための通信ハンドル */ Serversocket SS = null;ソケットS = null; / **受信後にローカルに作成されたファイルオブジェクトとファイル出力ストリームオブジェクトを定義します*/ file file = null; fileoutputStream fos = null; / **入力ストリームを定義し、Socket's inputStreamを使用してパケットを入力します*/ inputStream is = null; / **バイト配列を定義して、パケットのストレージパケットとして機能します*/ byte [] buffer = new byte [4096*5]; / **ファイルの送信リクエストを受信するために使用されるスタンド文字列*/文字列comm = null; / ** Socekt通信を設定し、サーバーが接続するのを待ちます*/ try {ss = new Serversocket(4004); s = ss.accept(); } catch(ioexception e){e.printstacktrace(); } / **クライアントの行から送信されたコンベンション情報をお読みください* / try {inputstreamReader isr = new inputstreamReader(s.getInputStream()); BufferedReader BR = new BufferedReader(ISR); comm = br.readline(); } catch(ioException e){system.out.println( "サーバーがクライアントから切断されます"); }/**クライアントが送信した要求コマンドを開始*/int index = comm.indexof( "/#"); / **プロトコルがファイルを送信するためのプロトコルであるかどうかを話し合います*/ string xieyi = comm.Substring(0、index); if(!xieyi.equals( "111")){system.out.println( "サーバーで受信したプロトコルコードは間違っています");戻る; } / **ファイルの名前とサイズを解析します* / comm = comm.Substring(index + 2); index = comm.indexof( "/#"); string filename = comm.substring(0、index).trim(); string filesize = comm.substring(index + 2).trim(); / **ファイルを受信する空のファイルを作成*/ file = new file(filename); if(!file.exists()){try {file.createNewFile(); } catch(ioException e){system.out.println( "サーバー側のファイルの作成が失敗した"); }} else { / *** / system.out.println( "同じファイルがこのパスに既に存在する、上書き"); } / ** [上記はクライアントコードに記述されたサーバーの準備された部分]* / / ***ファイルを受信するためのキーコード* / try { / **ファイルをファイル出力ストリームオブジェクトにラップする* / fos = new fileoutputStream(file); long file_size = long.parselong(filesize); IS = s.getInputStream(); / **サイズは、受信した各パケットの長さ*/ int size = 0です。 / **カウントは、受信したファイルの長さを記録するために使用されます*/ long count = 0; / ** while loop*/ while(count <file_size){/ **入力ストリームからパケットを読み取ります*/ size = is.read(buffer); / **ローカルファイルに読んだパケットを書き込みます*/ fos.write(buffer、0、size); fos.flush(); / **受信したファイルの長さ +サイズ*/ count += size; System.out.println( "サーバーはパケットを受信し、サイズは" + size); }} catch(filenotfoundexception e){system.out.println( "サーバーはファイルの書き込みに失敗しました"); } catch(ioException e){System.out.println( "server:client disconnect"); }最後に{ / ***開いたファイルを閉じます*必要に応じて、ここでソケット接続を閉じることもできます** / try {if(fos!= null)fos.close(); } catch(ioexception e){e.printstacktrace(); } // catch(ioexception e)} // finally} // public static void main(string [] args)} // public class serverreceiveクライアントソースコード:
java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。 java.io.filenotfoundexceptionをインポートします。 java.io.ioexceptionをインポートします。 java.io.outputStreamをインポートします。 java.io.printStreamをインポートします。 java.net.socketをインポートします。 /** * *ファイル名:clientsend.java *実装関数:クライアントとしてサーバーにファイルを送信 * *特定の実装プロセス: *1。サーバーとの接続を確立します。IP:127.0.0.1、ポート:4004 * 2。クライアントとサーバー間のファイル転送を実証するためにのみ使用されます。 *各データパケットの前にファイルプロトコルコマンドはありません *特定のプロトコル送信とファイルの発信使用段階を独自のプログラムに従って配置できます * * *著者:初心者 *作成時間:2014-08-19 * * */ public class clientsend {public static void main(string [] args){/ ** s = nullの接続を確立するためのコミュニケーションハンドル。 /**ファイルオブジェクト、つまり送信されるファイルを定義します*絶対パスを使用する場合は、特定の違いについて '/'と '**の違いを使用することを忘れないでください。 / **ファイル入力ストリームを定義して、送信されるファイルを開いて読み取ります*/ fileinputStream fis = null; / **データパケットのストレージパケットとして使用するバイト配列を定義します*/ byte [] buffer = new byte [4096*5]; / **出力ストリームを定義し、Socket's OutputStreamを使用してパケットを出力します*/ outputStream os = null; / **送信されるファイルが存在するかどうかを確認します戻る; } / **サーバーとの接続を作成* / try {s = new Socket( "127.0.0.1"、4004); } catch(ioException e){system.out.println( "サーバーに接続されていない"); } / **ファイルオブジェクトでFISオブジェクトを初期化*ファイルサイズを抽出できるように** / try {fis = new fileInputStream(sendFile); } catch(filenotfoundexception e1){e1.printstacktrace(); } /**最初にファイルに関する情報をサーバーに送信して、サーバーに関連する準備を受信するようにサーバーに促進します*特定の準備については、サーバーコードを確認してください。 * *送信されたコンテンツには以下が含まれます。ファイルプロトコルコードの送信(ここに111)/#ファイル名(接尾辞名付き)/#ファイルサイズ * */try {printStream ps = new PrintStream(S.GetOutputStream()); ps.println( "111/#" + sendfile.getName() + "/#" + fis.abailable()); ps.flush(); } catch(ioException e){system.out.println( "サーバー接続割り込み"); } / ***ここで2秒間スリープします。また、サーバーが関連する作業を準備するのを待って、ネットワークの遅延*このコードを追加することを選択できます** / try {thread.sleep(2000); } catch(arternedexception e1){e1.printstacktrace(); } / **以前の準備作業が終了した後*ファイル転送の重要なコード** / try { / **ソケットの出力ストリームを取得して、パケットを書き込みます* / os = s.getOutputStream(); / **サイズは、各ファイルのサイズを記録するために使用されます*/ int size = 0; / **ファイルの読み取りが終了するまでwhile loopを使用してファイルを読み取ります*/ while((size = fis.read(buffer))!= -1){system.out.println( "クライアントはパケットを送信し、サイズは" +サイズ); / **出力ストリームに読んだばかりのパケットを書き込みます*/ os.write(buffer、0、size); / **更新*/ os.flush(); }} catch(filenotfoundexception e){system.out.println( "クライアント読み取りファイルエラー"); } catch(ioException e){system.out.println( "クライアント出力ファイルエラー"); }最後に{ / ***開いたファイルを閉じます*必要に応じて、ここでソケット接続を閉じることもできます** / try {if(fis!= null)fis.close(); } catch(ioException e){System.out.println( "クライアントファイルの閉じエラー"); } // catch(ioexception e)} // fatlent} // public static void main(string [] args)} // public class clientend上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。