この記事では、参照用のJavaファイルアップロードサーバーとクライアントの特定のコードを共有しています。特定のコンテンツは次のとおりです
ファイルアップロードサーバー:
/ *** TCPプロトコルを使用してアップロード機能を実装するサーバー側*アイデア:*新しいサーバーソケット*クライアントが接続するのを待機*子供のスレッドを起動し、子スレッドへの接続、* @author yajun***/ public class uploadserver {public void main = upload(args) uploadthread command = new uploadThread(); server.start(command); } /***関数:接続を受け入れ、子スレッドを起動し、ループ* @paramコマンドダウンロードに使用される子スレッドオブジェクトを使用します。ソケットトランスソケット。 //ビジネスロジックtry {serversocket = new Serversocket(55555); while(true){system.out.println( "接続を待つ..."); transsocket = serversocket.accept(); int i = 0; i ++; System.out.println( "th"+i+"connection"); //ダウンロード後にスレッドを閉じる必要がありますか? ? ? command.Setsocket(transsocket); executors.newfixedthreadpool(5).execute(command); } //例外catch} catch(ioexception e){e.printstacktrace(); //リソースを閉じる}最後に{try {serversocket.close(); } catch(ioexception e){e.printstacktrace(); }} // tryの終了} // connectの終了@test public void testConnect(){//テストタスク:最初にサーバー側を実行し、クライアントを複数回実行します。サーバーセグメントは子スレッドを継続的に作成でき、テストは成功します//テスト準備:スレッドを作成してダウンロードスレッドuploadthreadコマンド= new uploadThread(); start(command); } @test public void testdown()throws ioexception {byte [] buf; bytearrayinputStream bis; string str = "canglaoshi.avi/ncontent、content、content"; buf = str.getBytes(); bis = new bytearrayinputStream(buf); uploadthread ut = new uploadThread(); Ut.Down(BIS); }} //各送信タスククラスを完了するサブスレッドuploadthread runnable {socket socket; public uploadthread(){} public uploadthread(socket socket){this.socket = socket; } @Override public void run(){inputstream in; try {in = socket.getInputStream();ダウン(in); //例外処理} catch(ioexception e){e.printstacktrace(); }最後に{try {socket.close(); } catch(ioexception e){e.printstacktrace(); }} // test code/*try {thread.sleep(5000); system.out.println(thread.currentthread()。getname()+"、copyname()+"); } catch(arturnedexception e){e.printstacktrace(); }*/} //実行の終了public void setSocket(socket socket){this.socket = socket; } //メソッドをダウンロード/***目標:入力ストリームのデータをローカル*アイデアに書き込みます。* 1。入力ストリームを取得します。ソケットから直接取得するのではなく、入力ストリームに渡すのが最善です* 2。入力ストリームからファイル名を読み取ります* 3。 Down(inputstream in)throws ioException {//ローカル変数char ch; char [] namearr = new char [256]; byte [] buf = new byte [1024];文字列name = ""; outputStream out = null; //ビジネスロジックtry {//ステップ1:ファイル名を取得し、ファイル出力ストリームint i = 0; while((ch =(char)in.read())!= '/n'){namearr [i ++] = ch; } //name = nameArr.toString();//this文は文字列を文字列に変換できません。次のステートメントname = new String(namearr)を使用する必要があります。 System.out.println( "ダウンロードするファイルは次のとおりです。"+name); out = new fileoutputStream( "src // down //"+name); //ステップ2:入力ストリームに他のコンテンツをファイルint lenに書き込みます。 while((len = in.read(buf))!= -1){out.write(buf、0、len); } out.flush(); //例外capture} catch(ioexception e){e.printstacktrace(); //リソースを閉じる}最後に{//質問:2つのキャプチャをまとめることはできますか?ストリームを閉じるときに例外に対処する方法は? in.close(); out.close(); } // debug system.out.println(name); }} // uploadThreadの終了ファイルアップロードクライアント:
/ *** TCPプロトコルを使用してアップロード機能を実装するクライアント* @author yajun*/ public class uploadclient {public static void main(string [] args){uploadclient client = new uploadclient(); client.upload( "src //木曜日// aslisttest.java"); } / ***関数:ファイルをサーバーにアップロードします* 1。サーバーへの接続を確立します*2。出力ストリームを取得*3。ファイルの内容を出力ストリームに書き込みます* 4。出力ストリームアウト; try {socket = new Socket( "127.0.0.1"、5555); out = socket.getOutputStream(); write2outputStream(name、out); //例外キャプチャ} catch(unknownhostexception e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }} @test public void testupload(){upload( "src // status.xml"); } / ** *関数:ファイル名と出力ストリームを渡し、ファイルを出力ストリームに書き込みます * @param path * @throws ioexception * / private void write2outputStream(string path、outputStream out)throws ioexception {fileinputStream fis = null; byte [] buf = new byte [1024];文字列filename = ""; //ビジネスロジックtry {// 1。ファイル名filename = path.substring(path.lastindexof( '//')+1)を書き込みます。 system.out.println( "アップロードするファイル名は"+filename); out.write(filename.getBytes()); out.write( '/n'); // 2。ファイルのコンテンツを書き込むfis = new fileinputStream(path); int len; while((len = fis.read(buf))!= -1){out.write(buf、0、len); } out.flush(); //例外処理} catch(ioexception e){e.printstacktrace(); //リソースを閉じる}最後に{fis.close(); out.close(); }} // upload @test @test public void testwrite2outputstream()throws ioexception {bytearrayoutputStream out = null; try {out = new bytearrayoutputStream(); write2outputStream( "src // status.xml"、out); system.out.println(out.toString( "utf-8")); } catch(ioexception e){e.printstacktrace(); }最後に{out.close(); }}}この記事は「Javaアップロード操作技術の要約」にまとめられており、誰もが学習して読むことを歓迎します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。