本例是用winsock传送文件。下面的代码是服务端的。由客户端向服务端发送文件。客户端选好文件后,点击发送文件大小,然后点击发送文件。
Option Explicit
Option Base 1
Dim file() As Byte
Dim flag As Integer
Dim flength, i As Long
Private Sub Command1_Click()
If Winsock1.State <> 0 Then Winsock1.Close
With Winsock1
.LocalPort = txtport.Text
.Bind
.Listen
End With
End Sub
Private Sub Form_Load()
flag = 0
End Sub
Private Sub Winsock1_connectionrequest(ByVal requestID As Long)
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.Accept (requestID)
MsgBox "接受连接请求"
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
If flag = 0 Then
Winsock1.GetData flength, vbLong
ReDim file(flength)
flag = 1
Else
Winsock1.GetData file, vbArray + vbByte
Status.SimpleText = "接收完文件……"
Open Text1.Text For Binary As #5
For i = 1 To flength
Put #5, i, file(i)
Next i
Close #5
Status.SimpleText = "接收完成"
flag = 0
End If
End Sub
结果运行后说是下标越界。出错的地方系统指出在Put #5, i, file(i)这句。为什么啊一直到Status.SimpleText = "接收完文件……"。这句都没问题。为什么后面会有问题呢?
按照一楼的说法改了后,发现在
ReDim file(flength)
这句就提示说“下标越界”了