发送方:
   dim PixGet(8000) as Byte
   Winsock1.SendData PixGet
接受方: 
   dim PixGet() as Byet 
   Winsock1.GetData PixGet代码我就简化过了,问题是PixGet有时就接受到8000个,有时就7999呢?
掉包了?应该如何解决呢?

解决方案 »

  1.   

    以下是我个人经验,仅供参考:
        你两端都在一个机子上测试吧,这还好些。
        你采用的是什么协议不知道,猜想大概是UDP协议。
    当你放入真正的互联网中可能丢得还会多些,问题就是8K一个数据包有点偏大,当你发送出去时,再加上包头包尾就远不止8K了,在经过路由器时可能会自动分包,所以你要注意分包和拼包问题。
        建议你人工用程序分包以不大于4K一个包为好,然后一个包一个包的发,中间做适当延时,到接收方再人工做程序拼包。
      

  2.   

    不一定这批数据是一次就发送过来的,也许是多次发送并触发多次DATAARRXXXXXX那个事件的.网络收发数据,一定要有协议.比如这样:A:我要发送一段数据,大小是8000,CRC32为XXXXXXXX   B:了解,进入接收状态,请开始发送.
    A:XXIU*@U(UD(#WQN*(WUD(*UW#(MUD(*WE          B:......(不出声,接收字节,直到收完8000字节)
                                                 B:接收到了8000字节,其CRC32为XXXXXXXX,正确.
    A:了解,退出数据发送状态.                       B:了解,断开.
      

  3.   

    总之不要期望SendData和GetData一一对应!
    多次SendData可能被合并成一次GetData,一次SendData可能被分成多次GetData!