请刚才那位英雄好人帮到底,winsock怎么传递二维数组?

xiaoyuanzhi 2004-10-27 05:04:47
刚才这个好象只能解决一维数组,我改成二维数组它说地址族不支持,请看看怎么回事?
发送端:
Dim B(1, 1) As String
Private Sub Form_Load()

Winsock1.RemotePort = 1001
B(0, 0) = "a": B(1, 1) = "c"
B(1, 0) = "b": B(0, 1) = "d"
End Sub
Private Sub Command1_Click()
Winsock1.SendData setArr(B)
End Sub
'传送时的函数
Public Function setArr(A() As String) As String
Dim temp As String
Dim i, j As Integer
For i = 0 To 1
For j = 0 To 1
temp = temp & A(i, j) & "(_)()_&"
Next
Next
setArr = temp
End Function
接收端:
Option Explicit

Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Bind
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim b(1, 1) As String
Dim st As String
Winsock1.GetData st, vbString
b = GetArr(st)
For i = 0 To 1
For j = 0 To 1
Text1.Text = Text1.Text & b(i, j)
Next
Next
End Sub
'接受时的函数
Public Function GetArr(a As String) As String()
Dim temp() As String
temp = Split(a, "(_)()_&")
GetArr = temp
End Function
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyg0 2004-10-28
  • 打赏
  • 举报
回复
Option Explicit
Dim b(1, 1) As String
Private Sub Form_Load()

Winsock1.RemotePort = 1001
b(0, 0) = "a": b(1, 1) = "c"
b(1, 0) = "b": b(0, 1) = "d"
End Sub
Private Sub Command1_Click()
Winsock1.SendData setArr(b)
End Sub
'传送时的函数
Public Function setArr(a() As String) As String
Dim temp As String
Dim i, j As Integer
For i = 0 To 1
For j = 0 To 1
temp = temp & a(i, j) & "(_)()_&"
Next
temp = temp & "#!@$!!#$$^&%%^"
Next
setArr = temp
End Function
接收端:
Option Explicit

Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Bind
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim b() As String
Dim c() As String
Dim i As Integer
Dim j As Integer
Dim st As String
Winsock1.GetData st, vbString
b = GetArr(st)
For i = 0 To UBound(b)
c = GetArrFill(b(i))
For j = 0 To UBound(c)
text1.Text = c(j)
Next
Next

End Sub
'接受时的函数
Public Function GetArr(a As String) As String()
Dim temp() As String
temp = Split(a, "(_)()_&")
GetArr = temp
End Function
Public Function GetArrFill(a As String) As String()
Dim temp() As String
temp = Split(a, "#!@$!!#$$^&%%^")
GetArrFill = temp
End Function
zyg0 2004-10-28
  • 打赏
  • 举报
回复
把2维苏组换成动态1维苏组不就行了
xiaoyuanzhi 2004-10-28
  • 打赏
  • 举报
回复
这样也没什么用啊,
flyingscv 2004-10-27
  • 打赏
  • 举报
回复
Public Function setArr(A As Variant) As String
xiaoyuanzhi 2004-10-27
  • 打赏
  • 举报
回复
还是明天再看。
xiaoyuanzhi 2004-10-27
  • 打赏
  • 举报
回复
不对啊。
msgbox ubound(b)
打出来的不是数组的维数而是一维数组成员的个数耶。
xiaoyuanzhi 2004-10-27
  • 打赏
  • 举报
回复
哦,谢谢,可惜下班了。
只能明天再试。
非常感谢。
zyg0 2004-10-27
  • 打赏
  • 举报
回复
我写的1维苏组是动态的,你可以随意定义他有几项,就能不能更改维数,要想更改维数只能写死。那样就没有通用性了,我给你写个动态苏组的例子
服务器
Option Explicit

Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Bind
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim b() As String
Dim str As String
Winsock1.GetData str, vbString
b = GetArr(str)
msgbox ubound(b)‘苏组的维数
Text1.Text = b(0)
Text2.Text = b(1)
End Sub
'接受时的函数
Public Function GetArr(a As String) As String()
Dim temp() As String
temp = Split(a, "(_)()_&")
GetArr = temp
End Function
客户端
Option Explicit
Dim b(0 To 1) As String
Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 1001
b(0) = "a": b(1) = "b"
End Sub
Private Sub Command1_Click()
Winsock1.SendData setArr(b)
End Sub
'窜送时的函数
Public Function setArr(a() As String) As String
Dim temp As String
Dim i As Integer
For i = 0 To UBound(a)
temp = temp & a(i) & "(_)()_&"
Next
setArr = temp
End Function
zyg0 2004-10-27
  • 打赏
  • 举报
回复
刚才这个好象只能解决一维数组,我改成二维数组它说地址族不支持,请看看怎么回事?
我写的只支持1维苏组,。但是苏组的项你可以动态定义,

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧