使用winsocket的udp方式如何发送、接收自定义的结构?急!

daboby 2005-08-23 02:04:54
自定义结构如下:
public type
intID as integer
strName as string
end type
...全文
404 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
welon 2005-12-23
  • 打赏
  • 举报
回复
to theforever(碧海情天)
老大,你是怎么解决问题的?
zyg0 2005-12-18
  • 打赏
  • 举报
回复
.......
  • 打赏
  • 举报
回复
感谢! 解决大问题了。
呵呵,无论再老的问题,对初涉此领域的人也是有帮助的。
如果没看到这个解决方法,我们就得花一两千块找人做了。因为我认为问题必须自己解决,所以花了一整天的工夫来查找和实验解决办法,终于得益于此帖解决了问题。

(上午的时候就试过COPYMEMORY这个办法,但当时没有这样的例程,自己用不通,甚至声明两个结构完全一样的变量,给其中一个赋值后COPYMEMORY到另一个同类型的变量中都出错)
南山明月 2005-10-21
  • 打赏
  • 举报
回复
Dim ByGet(0) As Byte

Winsock1.GetData ByGet(0)

MsgBox ByGet(0)


CopyMemory CnndbFile, ByGet(0), 116
出现VB6.ext 产生了错误将补关闭 无一次例外,真是不

116 是客户端Bt(0) 长度,,CnndbFile 是一个结构体
CopyMemory Bt(0), CnndbFile, LenB(CnndbFile)
Winsock1.SendData Bt(0)
zyg0 2005-10-21
  • 打赏
  • 举报
回复
byte()
南山明月 2005-10-21
  • 打赏
  • 举报
回复
Winsock1.GetData Reve
这个reve 该是什么类型
zyg0 2005-10-21
  • 打赏
  • 举报
回复
并发应该可以处理,并发无外乎收到2蓓或者3悲消息
2个结构体
1
int 消息体长度
2。消息体
消息体也是结构体
接收时候先提取前2位 读出长度,然后把长度消息提取出来
剩下 部分继续这样处理
zyg0 2005-10-21
  • 打赏
  • 举报
回复
并发了八,他的并发,我还没有想好怎么处理
南山明月 2005-10-21
  • 打赏
  • 举报
回复
一旦有一点错误将是致命的 尤其在网络传输中
南山明月 2005-10-21
  • 打赏
  • 举报
回复
to zyg0
我试过不怎么稳定
zyg0 2005-10-21
  • 打赏
  • 举报
回复
这么老都能被你翻出来
南山明月 2005-10-21
  • 打赏
  • 举报
回复
是怎样的,hai hai
zyg0 2005-08-23
  • 打赏
  • 举报
回复
其实不能直接传type
必须用copymoney把type转成 byte()
然后传,接受时候再作个逆向的操作就行了
zyg0 2005-08-23
  • 打赏
  • 举报
回复
发送
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type aaa
intID As Integer
strName As String
End Type
Dim a As aaa
Dim b As aaa
Dim bt3() As Byte
a.intID = 10
a.strName = "sdfasdfasdf"
ReDim bt3(LenB(a))
CopyMemory bt3(0), a, LenB(a)
'这样就可以senddate bt3


-----------------------------接受
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type aaa
intID As Integer
strName As String
End Type
Dim b As aaa
CopyMemory b, bt3(0), LenB(a)
MsgBox b.intID


---------------------我的单机测试代码
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type aaa
intID As Integer
strName As String
End Type

Private Sub Command2_Click()
Dim a As aaa
Dim b As aaa
Dim bt3() As Byte
a.intID = 10
a.strName = "sdfasdfasdf"
ReDim bt3(LenB(a))
CopyMemory bt3(0), a, LenB(a)
CopyMemory b, bt3(0), LenB(a)
MsgBox b.intID
End Sub

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧