本人通过winsock发送一个■网络序的二进制的数据流■,可是对这些概念和转换实在不懂,所以请您给我留个程序,谢谢!需要发送的字段:
=========================================================================================字段名 字节数 类型 描述
Header->dwType 4 Integer 数据类型ID:3204
Header->dwLength 4 Unsigned Integer 实际数据长度(登陆请求消息长度-header长度)
nCompanyID 4 Integer 企业编号:1111
szUserName 20 Octet String 用户名:test
szPassword 16 Octet String 密码:test
nVersion 4 Unsigned Integer 版本号:1
其中:Unsigned Integer 无符号整数(非网络字节顺序)
Integer 整数,可为正整数、负整数或零(非网络字节顺序)
Octet String 定长字符串,位数不足时,如果左补0则补ASCII表示的零,如果右补0则补二进制的零==========================================================================================请把上述的6个字段组成一个网络序二进制的数据流,发送出去。winsock1.senddata 此网络序二进制的数据流
注:网络序的二进制流:
比如:Header->dwType 4 Integer 数据类型ID:32043204的十六进制形式是C84,网络的数据传送格式是00000C84,然后再转换成2进制的即可.string的就不用转换了,比如说发送
szUserName 20 Octet String 用户名:test20个字节,前4个字节是test,后16个字节是二进制的0请各位详细的写一下,小弟愚笨. 衷心感谢!
=========================================================================================字段名 字节数 类型 描述
Header->dwType 4 Integer 数据类型ID:3204
Header->dwLength 4 Unsigned Integer 实际数据长度(登陆请求消息长度-header长度)
nCompanyID 4 Integer 企业编号:1111
szUserName 20 Octet String 用户名:test
szPassword 16 Octet String 密码:test
nVersion 4 Unsigned Integer 版本号:1
其中:Unsigned Integer 无符号整数(非网络字节顺序)
Integer 整数,可为正整数、负整数或零(非网络字节顺序)
Octet String 定长字符串,位数不足时,如果左补0则补ASCII表示的零,如果右补0则补二进制的零==========================================================================================请把上述的6个字段组成一个网络序二进制的数据流,发送出去。winsock1.senddata 此网络序二进制的数据流
注:网络序的二进制流:
比如:Header->dwType 4 Integer 数据类型ID:32043204的十六进制形式是C84,网络的数据传送格式是00000C84,然后再转换成2进制的即可.string的就不用转换了,比如说发送
szUserName 20 Octet String 用户名:test20个字节,前4个字节是test,后16个字节是二进制的0请各位详细的写一下,小弟愚笨. 衷心感谢!
解决方案 »
- 如何取到treeview中名称
- vb做报表的时候为什么说rpt未被定义
- vb向SQL SERVER数据库中写入文件问题?AppendChunk,GetChunk操作后,无法从数据库恢复得到原文件。
- 关于vb里使用xml换行的问题
- CRC校验
- 一个程序已经运行了,如果再次点击该程序就出现原先那个程序显示在屏幕中央,用代码怎么实现。谢谢!
- 求助Jmail 控件 使用 接受 发送邮件的详细资料(用vb)!!急!!-----高分
- 天上★,亮晶晶,永灿烂,长安宁
- 怎样可以知道Win下的"记事本"中的光标前的字符呢??????????????
- Data Report 问题
- 报表中需要每页有合计行,用datareport可以实现吗?
- 求VB编写的更换某一exe文件的代码
Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Public Type aa
DwType As Integer
DwLength As Integer
NCompanyID As Integer
SzUserName As String * 20
SzPassword As String * 16
nVersion As Integer
End TypePrivate Sub Command1_Click()
Dim mUserIp As String
Dim mMsgIp As String
Dim mMsgPort As Integer
mUserIp = Winsock1.LocalIP
mMsgIp = "127.0.0.1"
mMsgPort = 2000
Winsock1.RemoteHost = mMsgIp
Winsock1.RemotePort = mMsgPort
Winsock1.ConnectEnd SubPrivate Sub Winsock1_Connect()
MsgBox "连接成功"
End SubPrivate Sub Command3_Click()
'赋值并发送二进制流
Dim MyRecord As aa '声明变量。' '对 EmployeeRecord 变量的赋值必须在过程内进行。
MyRecord.DwType = 3204 '给一个元素赋值。
MyRecord.DwLength = 4
MyRecord.NCompanyID = 1111
MyRecord.SzUserName = "test"
MyRecord.SzPassword = "test"
MyRecord.nVersion = 1
Dim buffer() As Byte
ReDim buffer(Len(MyRecord) - 1) CopyMemory buffer(0), MyRecord, Len(MyRecord)
Winsock1.SendData buffer
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'获得数据 Dim str() As Byte
Winsock1.GetData str, vbArray + vbByte Dim MyRecord As aa
CopyMemory MyRecord, str(0), UBound(str) + 1
Text1.Text = MyRecord.DwLength & "|" & MyRecord.DwType & "|" & MyRecord.dwResult & "|"
Text1.Text = Text1.Text & MyRecord.szReason
End Sub
谢谢