VB中发送16进制数据包?

来源:百度知道 编辑:UC知道 时间:2024/05/12 05:16:07
VB中发送16进制数据包?
如果是使用WINSOCK进行TCP连接 连接后如何发送16进制数据包?
我这个就需要TCP连接 谢谢!
现在问题出现在 :
winsock1.sendata "abcde"
winsock1.sendata "fghij"
他会一次把2个做一个包 全部都发出去
我现在需要把这2个分成2个包发送
怎么处理?谢谢
楼下的 还是不行 他只分开一次 但是我要发N多个 所以后面的都一次发的。 还请教另外的问题截获的数据包是256位的 但是我发送只能发送128位的,例如7F以后的 我发送出去 就不是我原来想发送的哪个数据了,怎么处理?

发送16进制数据包跟发送String类型的数据包是一样的。
或者你也可以转换成2进制发送。

主要是接收端对数据包的处理。

winsock1.sendata "abcde"
Doevents '这里加一句
winsock1.sendata "fghij"

发送的数据包格式取决于接收端的处理函数接口。

字串格式:直接用字符串发送;
二进制数据:使用字节数组,定义为 Dim abytSend() As Byte,每一个数组元素保存一个字节的十六进制代码(0-255)。

每发一个包,通过sleep函数进行延时处理,或者等于接收端反馈后再发下一个包,或者在两个包之间加上特征字串来分隔。这个根据数据内容和发送要求自己决定吧。

最好就是让对方发送一个反馈包然后发送下一个
或者定义一个数据包的结构,在包头存放标签,数据大小等
然后放数据
最后发包过去
(我自己做的加了MD5验证)

'这是接收数据的winsock
'Execute函数是处理数据的:Private Function Execute(ID As Integer, b() As Byte, ret As Boolean) As Byte()
'ret是是否返回发送一个数据包,b()是数据,ID是winsock的index(这是支持多sock的)

Private Sub wsi_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'Debug.Print bytesTotal
'If bytesTotal = 2 Then Stop
'Debug.Print UBound(buff(bi).b)
If bytesTotal <= 0 Then Exit Sub
Dim bi As Integer, br A