2017-08-15 8 views
0

私は、ローカルネットワーク上で他のデバイスとソケットを介して通信するアプリケーションを持っています。私はファイルとテキストも転送したいと思っています。 私の問題は、ファイルとテキストの両方を取得して受信で管理する方法がわからないことです。ストリームを使用して文字列とファイルをソケットで送受信する

これは私のテキストレシーバです:

try { 
      outputStream = new DataOutputStream(socket.getOutputStream()); 
      outputstream_external = outputStream; 
      inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      log("success to set streams"); 
     } 
     catch (IOException e1) { 
      log("Error: Connection is not stable, exit"); 
      shutdown(); 
     } 
     while (true) { 
      String message = null; 
      try { 
       message = inputStream.readLine(); 
       if (message == null) { 
        return; 
       } 
       G.log(message); 
       JSONObject object = new JSONObject(message); 
       String command = object.getString(Command.COMMAND); 
       G.log(message); 

が、これは私のテキストの送信者である:

public void sendCommand(String command) { 
     G.log("send command + " + command); 
     command = command.replace("\n", " ") + "\n"; 
     if (outputStream == null) { 
      return; 
     } 
     final String commend = command; 
     Thread thread = new Thread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       try { 
        outputStream.write(commend.getBytes()); 
       } 
       catch (IOException e) { 
        e.printStackTrace(); 
        G.log("sendCommand into catch"); 
       } 
      } 
     }); 
     thread.start(); 

    } 

私は一緒にテキストやファイルを受信することができますか?

答えて

0

そのため、HTTP、FTP、SMTPなど、非常に多くのアプリケーションレベルのネットワークプロトコルが存在します。

あなたのケースでは、2つのタイプのメッセージが必要です.1つは文字列、もう1つはファイルです。各メッセージは、あらかじめ定義された形式に準拠する必要があります。例えば、

[4バイトのメッセージタイプ] + [4バイトのメッセージの長さ] + [メッセージ内容]

センダ側にメッセージを構築し、受信側にメッセージを解析。

しかし、ほとんどの場合、ホイールを再開発する必要はありません。既存のプロトコルが適切かどうかをインターネットで検索してください。

+0

Tnx、どうやってストリームでこのフォーマットを構築し、受け取るのですか?サンプルコードを説明してくれますか? –

+0

いくつかの良いチュートリアルが見つかりました。http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.htmlおよびhttp://crunchify.com/java-nio-non-blocking-io-with-server -client-example-java-nio-byte-buffer-selector-java-nio-vs-io / – cmoaciopm

関連する問題