UDP是不可靠的,数据会丢失,建议用TCP socket,这里有socket例子,可参考:
thttp://download.csdn.net/detail/geoff08zhang/4571358

解决方案 »

  1.   

    楼主说没丢包了。1.楼主用两个缓存区交互交替接收数据这个方法是不错,但是楼主要考虑到一个问题。是不是两个缓冲区够大,就是还没等到你写完数据库,另外个也满了,又交替把你第一个满的缓冲区给清空了?2.你用PostMessage通知界面线程写数据库?(这个会卡吧)用PostThreadMessage发送到工作线程中去吧。
    (觉得麻烦可以用互斥进程来实现)主要看看1中的问题是否存在。
      

  2.   

    Quote: 引用 3 楼 tiger9991 的回复:

    楼主说没丢包了。
    1.楼主用两个缓存区交互交替接收数据这个方法是不错,但是楼主要考虑到一个问题。是不是两个缓冲区够大,就是还没等到你写完数据库,另外个也满了,又交替把你第一个满的缓冲区给清空了?///////////////////////////////////
    我给了10秒让一个链表接收数据,另外一个链表写数据,通过事务一次提交10000个insert into (没用批量)
    ,它写数据库的时间在5秒钟左右
      

  3.   

    (TCP 不适用实时接收数据,下位机不会发重复的包)我还是试试线程同步,昨天看到一篇文章说,工业上对实时数据接收和存储要求严格,不是觉得TCP就用TCP的,这个必须以UDP为前提,
      

  4.   

    接收线程中,没100毫秒会收到一组数据,在处理写入的线程中改怎么弄呢?线程同步的话,在写数据库时,可能导致接收线程没法接收数据包啊、、、、、接收线程能sleep么
      

  5.   

    楼主!!我现在做的一个项目也是基于UDP的实时数据接收和数据库存储....接收我用的是c#写的..按照约定的通讯协议接收解析...但是用了好多种方法掉包率都一直很高...可不可以指点一下..拜托了!!!
      

  6.   

    我也是在写UDP协议接收数据实时显示在界面上的……求发类似的程序或者指导啊!!!