1

UDPソケットを送受信するためのコードがあります

UDPコードを送信します。

public static void main(String args[]) throws Exception
{

    try
      {
          FileOutputStream fo = new FileOutputStream("OUTFILE.txt");
          PrintStream ps = new PrintStream(fo);  
          DatagramSocket Socket = new DatagramSocket(4555);
          byte[] receiveData = new byte[1000000];    
          DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

          while(true)
         {  

               receivePacket.setLength(receiveData.length);
               Socket.receive(receivePacket);

                String sentence = new String( receivePacket.getData());


                System.out.printf("RECEIVED: %s  " , new String(receivePacket.getData()));
                ps.println(sentence);
                ps.println();
                ps.close();
                fo.close();

         }

          File file = new File("OUTFILE.txt");
          FileInputStream fis = new FileInputStream(file);
          byte[] fsize = new byte[(int) file.length()];
          int size = fis.read(fsize);
          System.out.println("Received Size = " + size);


      } 
        catch (Exception e) {
          System.err.println(e);
        }



}

}

受信した各データパケットの値をファイルに書き込んでから、ファイル全体のサイズを取得したいと思います。私のコードでは、ファイルに最初に受け取った値が書き込まれました。受信した値全体をファイルに書き込む方法を教えてください。

4

1 に答える 1

0

最初のループの最後でストリームを閉じているため、追加の行を書き込むことはできません。ps.close();とのfs.close()呼び出しをループの外に移動する必要があります。さらに、ファイルから読み取るコードを呼び出すことができないことを保証する無限ループがあります。ループをいつ停止するかを決定するメカニズムが必要です。

于 2012-05-03T13:28:26.280 に答える