程序需要用户在text1文本框中输入命令,如需要输入"abc",回车后程序需要将abc这个指令发送到远程服务器.我使用数组的方法来发送如下,结果发送正常,返回数据也正常.
Dim Byte1(2) As Byte
Byte1(0) = &H61 '发送a 检查封包中61-87对应字母a-z,30-39对应数字0-9
Byte1(1) = &H62 '发送b
Byte1(2) = &H63 '发送c
Winsock1.SendData Byte1现在的疑问是:
1:当用户需要输入的指令格式为命令+序号时,如"abc123"时,这时的数组使用就不定长度了,这时的数组该如何去定义自己的大小?
2:程序如何将text1.text中的内容abc123自动翻译并写到数组对应的项去?
Dim Byte1(2) As Byte
Byte1(0) = &H61 '发送a 检查封包中61-87对应字母a-z,30-39对应数字0-9
Byte1(1) = &H62 '发送b
Byte1(2) = &H63 '发送c
Winsock1.SendData Byte1现在的疑问是:
1:当用户需要输入的指令格式为命令+序号时,如"abc123"时,这时的数组使用就不定长度了,这时的数组该如何去定义自己的大小?
2:程序如何将text1.text中的内容abc123自动翻译并写到数组对应的项去?
Dim byte1() As Byte
Dim i As Long
byte1 = "AAAAAADdddDD"
For i = LBound(byte1) To UBound(byte1)
Print byte1(i)
Next iEnd Sub以上是unicode,如果要发送的都是ansi的用strconv函数转换就成了.
61-86对应字母a-z,30-39对应数字0-9 是什么码?
Dim i As Long
byte1 = "AAAAAADdddDD"byte2 = StrConv(byte1, vbFromUnicode)For i = LBound(byte2) To UBound(byte2)
Print byte2(i)
Next i
请楼主看看StrConv函数
Dim i As Long
byte1 = Text1.textbyte2 = StrConv(byte1, vbFromUnicode)For i = LBound(byte2) To UBound(byte2)
Winsock1.SendData Byte2()
Next i您的意思代码应该是这样来发送指令数据流吧?我现在试不了,你看是否这样?
Winsock1.SendData Byte2()
Next i改成Winsock1.SendData Byte2()
Winsock1.SendData Byte2()
Next iFor i = LBound(byte2) To UBound(byte2)
Next i
Winsock1.SendData Byte2
发数据流上述谁正确?
For i = LBound(byte2) To UBound(byte2)
Winsock1.SendData Byte2(i)
Next i实际上可以一次发送过去的,对于大的数据量,在接收端就要处理一下了。
这样可以一次发送:
Winsock1.SendData Byte2
这位老大的叙述似乎有点问题吧,ANSI是不是4字节而UNICODE是8字节啊?就看到这里了,出去逛街了,放假麻
vb内部都是用unicode,外部是ansi
dim buf() as byte
dim pnt as long redim buf(0 to 1000)
pnt = 0
buf(pnt) = &h61:pnt = pnt + 1
buf(pnt) = &h62:pnt = pnt + 1
buf(pnt) = &h63:pnt = pnt + 1
buf(pnt) = &h31:pnt = pnt + 1
....
...
...
buf(pnt) = ??:pnt = pnt + 1
redim preserve buf(0 to pnt)
txd = buf
wsocket.senddata txt
txt=buf
buf=txt
byte()和string可以互相给值.
分析封包内容,在指令的前后都有一些控制字符,这些字符是定值定长的,如何放在与byte数组内一起发送。
搞定结贴了。谢谢