有个两个程序,一个是vb的,一个是vc的,要求他们之间传送数据,这个数据是个数据结构。 VC定义是这样的:
#pragma pack(1)typedef struct tagSmsMsgHeader{
INT msg_class;
INT msg_code;
DWORD seq_num;
CHAR customer_phone[16];
INT body_size;
}SmsMsgHeader;typedef struct tagSMSMsg{
SmsMsgHeader header;
CHAR smsMsg[128];
}SMSMsg;////////////////////////////////////////////////////////////////
VB是这样定义的
Public Type tagSmsMsgHeader
msg_class As Long
msg_code As Long
sql_num As Long
customer_phone As String * 16
body_size As Long
End TypePublic Type tagSMSMsg
header As tagSmsMsgHeader
SmsMsg As String * 128
End Type我把数据填好后,
问题是,VB的socket不能传送数据结构,所以我用copymemory到byte里面发送
CopyMemory SendByte(0), varptr(SmsMsg), length
但是很郁闷,传过去数据,VC那边解出来不对。
同问,反过来从VC那边发过来,VB又该如何解呢?对VB不是很熟悉,请问如何怎么写要?
#pragma pack(1)typedef struct tagSmsMsgHeader{
INT msg_class;
INT msg_code;
DWORD seq_num;
CHAR customer_phone[16];
INT body_size;
}SmsMsgHeader;typedef struct tagSMSMsg{
SmsMsgHeader header;
CHAR smsMsg[128];
}SMSMsg;////////////////////////////////////////////////////////////////
VB是这样定义的
Public Type tagSmsMsgHeader
msg_class As Long
msg_code As Long
sql_num As Long
customer_phone As String * 16
body_size As Long
End TypePublic Type tagSMSMsg
header As tagSmsMsgHeader
SmsMsg As String * 128
End Type我把数据填好后,
问题是,VB的socket不能传送数据结构,所以我用copymemory到byte里面发送
CopyMemory SendByte(0), varptr(SmsMsg), length
但是很郁闷,传过去数据,VC那边解出来不对。
同问,反过来从VC那边发过来,VB又该如何解呢?对VB不是很熟悉,请问如何怎么写要?
解决方案 »
- VB 请大家帮我找找错 查询语句
- 一个资源网站,里面有很多视频和电子图书
- VB好还是VB.net好。
- 挑战算法,有本事进来看看[高分相赠]
- 关于两个recordset对拷的问题!!!!!!!!!
- 比较实用的控件可以实现多种控件和多种数据类型的功能(数字、货币、日期、mask、图片、下拉列表、单选等等...)
- VB2008如何获得当前的URL地址,以及如何验证URL格式?
- 请教有关同一程序不同时间的获取
- 请问日期之间如何比较大小?
- r.Fields(ymmc) = "" 和r.Fields(ymmc) = Null 的区别在哪里?
- 利用VS 2010进行开发并行几点攻略分享!
- TabStrip控件与多页控件有何区别
Public Type tagSmsMsgHeader
msg_class As Long
msg_code As Long
sql_num As Long
customer_phone(15) As byte
body_size As Long
End TypePublic Type tagSMSMsg
header As tagSmsMsgHeader
SmsMsg(127) As byte
End TypeCopyMemory SendByte(0), byval varptr(SmsMsg), length 然后用 strconv 来转换ASI 和 BStr 就可以。
当然像你这种#pragma pack(1) ,最好用类型库。vb是可以用类型库,这样可以就不会发生内存对齐问题了。
可以参考http://topic.csdn.net/u/20100305/10/2398150e-ae14-4456-93a8-6abeee6d2b96.html
和http://topic.csdn.net/u/20090425/08/7bc8e6e6-e561-4ba8-aba2-7744de121f25.html?21241