您的位置:程序门 -> vb -> 网络编程



vb利用winsock编程传数据时,如何保证数据不掉包?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb利用winsock编程传数据时,如何保证数据不掉包?[已结贴,结贴人:linton]
发表于:2008-01-27 10:36:27 楼主
在vb编程中,想实现利用winsock传送施工现场数据到远程办公室,网络环境是施工现场用无线cdma,远程办公室为adsl加花生壳动态域名,如何保证数据在传送过程中不掉包。因为编程实现中发送的数据不能返回发送状态,有可能在发送过程中因网络堵塞而造成掉包。如何解决这一问题,谢谢!
发表于:2008-01-28 10:52:161楼 得分:10
1采用tcp协议
发表于:2008-01-28 13:56:442楼 得分:0
我采用的就是tcp协议。而且发现有时收到的数据与发送的数据块大小不一致的情况。比如传送一个400多kb的文件,将文件分成4kb或2kb的数据块体,然后利用winsock控件的senddata将各块体发送出去,但在客户端接收到的数据块体大小有时候与发送的块体大小不一致,如块体是4kb发送时,出现不一致的情况时接收到的数据块体却是1414(字节),或者比4kb要大。请问这种情况怎么解决?
发表于:2008-01-28 16:53:443楼 得分:10
用winsock發送資料時,要一次全部發送出去,,sock會把資料拆分為(8k/個)數據包發送,,你只需要接收就行,,不過你要在發送端的資料上加上發送的結束符,讓接收端知道當前已經收完了,
发表于:2008-02-07 13:14:324楼 得分:5
"但在客户端接收到的数据块体大小有时候与发送的块体大小不一致,如块体是4kb发送时,出现不一致的情况时接收到的数据块体却是1414(字节)"

像这种情况,应该还会有一个     4096-1414   字节大小的包会到达的
或者你需要减小每次发送量
发表于:2008-02-07 13:39:245楼 得分:5
我也建议分段发送,每此发送完,由客户端回复一个信息,较服务端继续发送接下来的资料,否则较服务器端重新发一次。
另外想问一下:在發送端的資料上加上發送的結束符。这个要如何做呀?这个结束符是sock自带的还是我们自己自定一个。
发表于:2008-02-07 17:12:346楼 得分:5
crc校验
发表于:2008-02-09 19:33:507楼 得分:5
crc   32     或者     md5     效验


快速检索

最新资讯
热门点击