Winsock1.getdate当数据大于8K时如何接收完整, 真不好意思,我再开个贴吧,给大家加回,不过有新问题,happy_sea能不能帮回答一下,这次肯定不会搞错Winsock1.SendData发送数据大于8K时会自动分包发送,用Winsock1.getdata要怎么处理才能接收完整的数据,有代码更好了用Winsock1.peekdata接收数据又不自动清空缓存,频繁发送数据的话缓存又会累积,请问如何清空缓存 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实在那个帖子中朋友们的回答已经比较清楚了:1、发送数据大于8K时会自动分包发送,这个问题你已经明白了;2、接收端要用GetData处理每次DataArrival事件,从你给的代码来看你应该传送的是字符,那就把每次GetData得到的数据累加起来就行了;3、要善于在发送端用DoEvents,它可以把SendData后存放在缓冲区中的数据立即发送出去,不管缓冲区满没满,这样可以有效地防止数据在发送端粘在一起;4、最好是自己定个协议,即分包头和数据体两部分分开来发送,包头的内容包括标记包头的关键字加上数据体的大小等,也可用两个winsock控件,一个只发包头,另一个只发数据体,接收端收到完整数据后再通知发送端发送下一组数据。建议下一个文件传送的代码研究研究;5、不要用PeekData 我采用第4种方法,传图片(二进制数据),图片与字符串混合传送多大都没有问题。模仿的地http协议中文件上传的方法。 感谢各位回复我传送的是字符,里边有中文,当分包时正好碰上中文,把中文分开了,当再合并时就成了乱码,我只好用peekdatawinsock1.peekdata data........winsock1.getdata ss最后我用getdata,好像可以清空缓存,现在是没出现问题,不知这方法好不好,反正我传的数据不会很大 API函数的参数取值有哪些 分别循环和合并循环哪个快? 新手请教 winxp sp2 上装不上vb6,请教如何解决? DataGrid如何汇总一个列的值? 请问如何使自己的程序设为开机后自动运行?另外如何使开机后运行后自动缩为系统图标 VB运行前提示正在配置,拷了dfst.dll文件还是解决不了问题。 请教:是否使用MD5加密算法的软件,对同一密码加密后的结果均唯一? adodc与DataGrid问题!急急!!!在线等待呀!!! 求救(我就这么多分了!) 帮我做一下,这几个题。 大家进来看看,我这段代码有问题吗,弄清楚就结贴
1、发送数据大于8K时会自动分包发送,这个问题你已经明白了;
2、接收端要用GetData处理每次DataArrival事件,从你给的代码来看你应该传送的是字符,那就把每次GetData得到的数据累加起来就行了;
3、要善于在发送端用DoEvents,它可以把SendData后存放在缓冲区中的数据立即发送出去,不管缓冲区满没满,这样可以有效地防止数据在发送端粘在一起;
4、最好是自己定个协议,即分包头和数据体两部分分开来发送,包头的内容包括标记包头的关键字加上数据体的大小等,也可用两个winsock控件,一个只发包头,另一个只发数据体,接收端收到完整数据后再通知发送端发送下一组数据。建议下一个文件传送的代码研究研究;
5、不要用PeekData
我采用第4种方法,传图片(二进制数据),图片与字符串混合传送多大都没有问题。模仿的地http协议中文件上传的方法。
我传送的是字符,里边有中文,当分包时正好碰上中文,把中文分开了,当再合并时就成了乱码,我只好用peekdata
winsock1.peekdata data
....
....
winsock1.getdata ss
最后我用getdata,好像可以清空缓存,现在是没出现问题,不知这方法好不好,反正我传的数据不会很大