vb 通过socket 发送数据的问题

发送端(rs是ADO)
ReDim TV(rs.RecordCount)’数组长度先行发过去了
rs.MoveFirst
i = 0
Do While Not rs.EOF
TV(i) = Abs(rs("TestValue"))
rs.MoveNext
i = i + 1
Loop
Sen (TV) '自定义个发送函数 tv就是发送的数据了

接收端
Dim tmp As String‘公共的声明

Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
On Error GoTo ErrH
tmp = ""
Winsockserver.GetData tmp
Select Case Mid(tmp, 1, 3)
Case "STA"
x = Val(Replace(tmp, "STA", "", 1))
Label1.Caption = x
Debug.Print tmp
Case Else
Call De
End Select
ErrH:
End Sub
Sub De()
Dim tmp() As Byte
ReDim tmp(x)
For i = 1 To x
Debug.Print i & " " & tmp(x)’ 全是0 还不能发负数!请问怎么解决!
Next i
End Sub

第1个回答  2009-11-13
1.将TV()声明为byte类型,很重要,因为VB中winsock.senddata只能传输入string及byte数组类型。
比如dim tv(2) as byte
tv(0)=0
tv(1)=5
tv(2)=10
winsock.senddata tv
注:string可以与byte直接转换,比如dim tv() as byte tv="abs"

2.接收时将tmp声明为byte类型,然后Winsockserver.GetData tmp即可,由上例tmp=tv,然后再根据要求处理(比如byte转换为string等)数据。
相似回答