2012-02-02 9 views
0

複数のデータ転送にソケットストリームを使用しようとしています。テキスト ソケット上の複数の出力

  • を送信するためList<>
  • を送信するための

    • ...

    は、私が期待するデータの種類を、続いてクライアントに伝えるStringを送信するためのひとつのソケットを使用することができます期待されるデータ(この場合はList<>)によって?ここで

    は私が考えていたものです。

    //declarations 
    //outputs and inputs 
        private ObjectInputStream input; 
        private ObjectOutputStream output; 
        private OutputStream checkStatus; 
        private PrintWriter out; 
        ... 
        private void forwardMessage(List<User> clients) throws IOException { 
         checkStatus = client.getOutputStream(); 
         out = new PrintWriter(new OutputStreamWriter(checkStatus), true); 
         out.println("Command Option 1");  
         client.shutdownOutput(); 
         output = new ObjectOutputStream (client.getOutputStream()); 
         for (int i = 0; i < clients.size(); i++) {  
          output.flush(); 
          output.writeObject(clients.get(i)); 
          output.flush(); 
          output.reset(); 
         } 
         output.writeObject(null); 
         client.shutdownOutput(); 
        } 
    

    私はこれをしようとすると、指定したエラーが「java.net.SocketException: Socket is closed

    である私も、OutputStreamをクローズしようとしたが、それは同じ結果を与えます。

    複数のデータ転送に1つのストリームソケットを使用するにはどうすればよいですか?

  • +2

    なぜclient.shutdownOutput(); before getOutputStream()? – kosa

    答えて

    0

    あなたはこれが役立つかもしれない、ネットワーク経由でこのデータを送信しようとしている場合:

    http://systembash.com/content/a-simple-java-udp-server-and-udp-client/

    それはデータを検出することになるとあなたは常にこのような何か行うことができます:

    if(name_of_your_string.compare("what_you_are_looking_for")){ //what you want to do with "what_you_are_looking_for" }

    関連する問題