免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1515 | 回复: 5
打印 上一主题 下一主题

求教:缓冲区传送数据问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-03 20:13 |只看该作者 |倒序浏览
今天想把UNIX主机上28个牌价发往客户机(WIN,VB),格式如下:
美圆|英镑|xxxx|yyyy|aaaa|cccc|2|1412|
............................................................
............................................................
如上格式总28条,xxxx,yyyy等表示数(如1.1234),用“|”分隔,每行8个数据。VB客户端在接收后,会把数据全部写到一个叫price.txt的文本中。我在UNIX端打日志看了,主机共发送了1806长的28个牌价,完全发送成功。但在VB客户端却不能成功接受,通过实践证明,VB端第一次接受了1366(约22.5条),第二次接收剩下的。由于两次是写入同一文本,所以第二次接受到的就覆盖了第一次接收到的东西。我和我同事(我做UNIX,他做VB)想了很多方法,都不能成功达到目的。包括我在发送时前8位先发送BUF长度,他在VB中判断是否接收到这个长度,如果没有,则等待。。。经过若干次尝试,都失败了。各位高手给我们想个招呀,我们都要被逼疯了。

论坛徽章:
0
2 [报告]
发表于 2004-08-04 01:30 |只看该作者

求教:缓冲区传送数据问题

把数据打个包,如
[#
美圆|英镑|xxxx|yyyy|aaaa|cccc|2|1412|
美圆|英镑|xxxx|yyyy|aaaa|cccc|2|1412|
#]

"[#"表示一次数据包的开始,"#]"表示

一次数据未接收完成先不要写到文件里,放在内存里,这样试试。
lzyang 该用户已被删除
3 [报告]
发表于 2004-08-04 05:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2004-08-04 08:09 |只看该作者

求教:缓冲区传送数据问题

呵呵,我曾经很熟悉的外汇买卖系统啊,两端我都做过。肯定是你VB代码的问题啦。
如果,你怕覆盖,分成两次接收,每次1024字节,存放在两个string,string 再拼起来不就行了?
还有,常用的办法是前4个字节代表后面要收的长度,如"1234...."代表后面要收1234个字节。

论坛徽章:
0
5 [报告]
发表于 2004-08-04 09:35 |只看该作者

求教:缓冲区传送数据问题

接着从第一次文件写的位置不就行了?

论坛徽章:
0
6 [报告]
发表于 2004-08-04 22:40 |只看该作者

求教:缓冲区传送数据问题

前几天我的BUF大小定的是4096,结果VB端接收不了,今天尝试BUF只定义1024,把长1806的包分两次发给客户端,在每个包的包头用#1,#2来表示第一个包还是第二个包,VB端受到#1,#2两个包后,再连起来写入price.txt.呵呵,改了代码,还没测试。。。。
   今天又被客户训了,郁闷ing..........
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP