主题:[讨论]vb中UDP能一次接收固定大小的值么?
jiony
[专家分:80] 发布于 2008-07-03 10:52:00
如题,我想自定义一个类型,如:
Type xxx
command As string*4
a(4) As integer
End Type
希望使用自定义的xxx来接收数据,这样,可以我就可以直接通过command来判断,数据类型,通过a(4)来获取数据。
如果不能,有其他方式可以实现这个目的吗?
回复列表 (共8个回复)
沙发
tanchuhan [专家分:15140] 发布于 2008-07-03 12:23:00
能
板凳
jiony [专家分:80] 发布于 2008-07-03 12:44:00
汗,大哥给个列子啊
3 楼
tanchuhan [专家分:15140] 发布于 2008-07-03 13:30:00
Dim var As xxx
fklasjfl.Send(var)
Dim var As xxx
dksajfls.Receive(var)
4 楼
jiony [专家分:80] 发布于 2008-07-03 16:11:00
我刚刚测试了下的,好像如果是自定义类型就会报错
compile error:
only user-defined types defined in public object modules can be coerced to or from a variant or pas* functions
5 楼
merry05 [专家分:8920] 发布于 2008-07-03 16:25:00
是的,winsock控件发送不了自定义类型
我在写聊天小程序时,有过这种思路,用copymemory把类型自定义类型那块区域复制到一个byte数组,进行发送。然后在接收端时,再一次copymemory还原出数据。
不过最后没有成功,integer类型都是对的,而string类型出来的却是乱码。
关注一下本贴,看看几位大牛是怎么解决的
6 楼
jiony [专家分:80] 发布于 2008-07-03 16:43:00
[quote]是的,winsock控件发送不了自定义类型
我在写聊天小程序时,有过这种思路,用copymemory把类型自定义类型那块区域复制到一个byte数组,进行发送。然后在接收端时,再一次copymemory还原出数据。
不过最后没有成功,integer类型都是对的,而string类型出来的却是乱码。
关注一下本贴,看看几位大牛是怎么解决的[/quote]
呵呵,难得我稀里糊涂的语句大哥还明白我的意思。
我后来的做法就是先用字节数组接收,然后再赋值给自定义的变量
7 楼
tanchuhan [专家分:15140] 发布于 2008-07-03 19:12:00
[quote]是的,winsock控件发送不了自定义类型
我在写聊天小程序时,有过这种思路,用copymemory把类型自定义类型那块区域复制到一个byte数组,进行发送。然后在接收端时,再一次copymemory还原出数据。
不过最后没有成功,integer类型都是对的,而string类型出来的却是乱码。
关注一下本贴,看看几位大牛是怎么解决的[/quote]
俺没用过Winsock控件,所以不知道它不可以发自定义类型,但是,内存中所有数据都可以用Byte阵列表示,所以,没有什么类型的数据是发不了的
出现乱码是因为你对String类型的理解不对。
俺用的是10多M的精简版VB,不带任何ActiveX控件。没法试。
8 楼
我是大喊三 [专家分:3010] 发布于 2008-07-03 20:48:00
拷,真的如你所说,有点看不懂你说的。
我来回复