远程传来的数据需要缓存下来,在处理接受数据的过程中又有数据不断从远端传来,我想让处理过程只要有数据传来就处于激活状态,用什莫方法?
我在dataArriva事件中用了一个while 循环,以缓冲数组的两个标志指针是否相等和数据是否处理完为条件,不断调用处理函数,这样肯定是不行的,那末改用什莫办法?

解决方案 »

  1.   

    dataArriva就是每当有数据就激发的事件啊,如果是传送文件一类的操作,在接受端开始接受文件之前必须要知道文件的大小,这样才能通过累加收到的数据判断是否完成了整个文件。
      

  2.   

    1、tcp/ip,没有数据的边界保护,经常是几个数据在一次事件中都收到,我个人的建议是
       dataArriva事件中不处理数据只把收到的数据放到缓冲数组里,另外启动一个线程来处理数据
       onTimer就可以,处理完关比timer,示意如下
       sub   dataArriva   '接收事件
      
           写缓冲数组里
           if timer1.enable=false then
              timer1.enable=true 
           end if
       end sub   sub   onTimer()'处理数据线程
        
         '处理数据
        if   处理结束 then
           timer1.enable=false
        end if
       end sub
    2、udp/ip 有数据的边界保护,虽不会几个数据一起响应一个事件,但象您这样用回造成数据的顺序混乱,最好还是用上一种方法
      

  3.   

    to : HanZhu1(寒竹) 
      一端是实时的,他不断的传来数据,若再ontimer()事件还没有处理完时又来了一些数据,
    中间的数据是否就漏掉了。
      

  4.   

    还有,因为我对数据的处理过程有些复杂,若还没处理完,timer事件又会触发。。