VFP中使用winsock控件收发网络数据时,如果包含有二进制数据,总是会丢失,或者与实际数据不符,这是由于字符转换的问题引起的。
vfp的字符串本质与二进制数据没有任何区别,而所有的OCX控件和COM组件(OCX控件本质是一种有界面的COM),默认都是UNICODE字符传输,虽然COM定义了几十种数据类型,但在VFP中,基本就只数字和字符可以用了,所以VFP在与组件交换数据时,会自动进行ansi->unicode或者unicode->ansi转换,大于128的字符如果成对则不易转错,但不成对出现时,这种转换就失败了,导致数据不是原始的数据,为了避免VFP的自动转换,可按如下方式处理:
从VFP传给组件
只需要简单套个CreateBinary(),VFP在把字符串传给组件时,不做任何转换,相当于BYTE或者LPBYTE,比如在winsock中发送二进制数据时,可以这样:
this.SendData(CreateBinary(你的字符串))
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/ljyit/article/details/124764390
按以上博主的方法发送数据,服务器收的跟发送的不相同,指点指点!