现需要做一个接收UDP数据包的程序,然后将数据包写成文件,数据包不大,但是量很大,需要有缓存机制,不知道具体如何实现缓存机制,求大神指导!!!UDP数据包接收

解决方案 »

  1.   

    使用队列Queue,然后有专门的线程,从Queue中读数据并向文件中写入
      

  2.   

    Queue.Synchronized可以返回一个安全的
      

  3.   

    当然,如果做的是大型项目,不希望程序异常中断后,队列中的数据丢失;或者是多进程间共享这些数据,那你需要有专门的缓存服务,memcached或者redis之类的吧。
      

  4.   


    谢谢,我想问一下,我用udpclient.receive来接收很多机器发过来的udp数据包。那么是应该这样写吗:
    UdpClient udpClient = new UdpClient(11010);
    IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 0);
    byte[] buff = udpClient.Receive(ref ipEndPoint);
      

  5.   


    你接收的代码能接收所有发来的数据,具体这些数据中哪些包是同一个数据被拆分的,要靠你自己发数据的协议来控制并区分,我了解的是不存在说A\B\C三个机器给D,D是没办法说A发来的放一个地方,B发来的放1个地方,C发来的数据方一个地方.
    这个识别要你自己在数据包里加东西来区分或者通过发来的ip来区分。