将UDP套接字数据保存到文件中

时间:2012-05-03 13:21:32

标签: file sockets datagram

我有一个发送和接收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);
        }



}

}

我想将每个接收到的数据包的值写入文件,然后获取整个文件的大小。 在我的代码中,我刚刚获得了文件中写入的第一个接收值。 您能告诉我如何在文件中写下整个收到的值。

1 个答案:

答案 0 :(得分:0)

在第一个循环结束时,您正在关闭流,因此无法写入其他行。您需要将ps.close();fs.close()调用移到循环之外。此外,您有一个无限循环,可以保证无法调用从文件中读取的代码 - 您需要有一些机制来确定何时停止循环。