遇到一个UDP发报文的问题,小弟初学请高手指点。
基本思想是我定义了一个相对复杂的结构 打算把用UDP发出去,网上找到了部分示例代码但是总是报错,以下是我写的代码还请大家帮忙看看。
Public Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCop) 'add by NL 07-12-07
Public Declare Function VarPtr Lib "MSVBVM60" (var As Any) As Long
Public Type OperateItem
NodeNum As Integer
state As Integer
CheckFlag As Integer
ContentLength As Integer
Content As String
End TypePublic Type CZPForm
PacketType As Integer
length As Integer
OperatieItemNum As Integer
SingleOperateItem() As OperateItem
End TypePublic SingleOperation As OperateItem
Public SendData As CZPForm
'以上是我定义的结构,SendData 是要发送的数据
Dim bytes() As Byte
'Dim data As varient
ReDim bytes(SendData.length * 2) As Byte
CopyMemory bytes(0), ByVal VarPtr(SendData), LenB(SendData)
WskUDP.SendData bytes
省略了其他的部分,就把关键的东西发上来了,出错报告Bad DLL calling convertion
基本思想是我定义了一个相对复杂的结构 打算把用UDP发出去,网上找到了部分示例代码但是总是报错,以下是我写的代码还请大家帮忙看看。
Public Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCop) 'add by NL 07-12-07
Public Declare Function VarPtr Lib "MSVBVM60" (var As Any) As Long
Public Type OperateItem
NodeNum As Integer
state As Integer
CheckFlag As Integer
ContentLength As Integer
Content As String
End TypePublic Type CZPForm
PacketType As Integer
length As Integer
OperatieItemNum As Integer
SingleOperateItem() As OperateItem
End TypePublic SingleOperation As OperateItem
Public SendData As CZPForm
'以上是我定义的结构,SendData 是要发送的数据
Dim bytes() As Byte
'Dim data As varient
ReDim bytes(SendData.length * 2) As Byte
CopyMemory bytes(0), ByVal VarPtr(SendData), LenB(SendData)
WskUDP.SendData bytes
省略了其他的部分,就把关键的东西发上来了,出错报告Bad DLL calling convertion
PacketType As Integer
length As Integer
OperatieItemNum As Integer
SingleOperateItem() As OperateItem
End Type 这里的SingleOperateItem() As OperateItem 最好是有固定维数
Dim doc As String
Dim strSrcFile As String
Dim fn As Long
doc="................" strSrcFile = TemporaryFile() ' 得到临时文件名
fn = FreeFile
Open strSrcFile For Binary Access Read Write As fn
Put fn, , doc
Close fn
Open strSrcFile For Binary Access Read Write Shared As #1
lngL = LOF(1)
ReDim bytFile(lngL - 1)
Get #1, , bytFile
Close #1 WskUDP.SendData bytFile
这个你自己改成个文件路径就可以了。
它会把中英文每个字符都当成两个字节