源代码如下: 发送方: Dim InBuf() as Byte Private Sub Form_Load() ... m_Wsk1.listen ...Private Sub m_Wsk1_ConnectionRequest(ByVal requestID As Long) If m_Wsk1.State <> sckClosed Then m_Wsk1.Close m_Wsk1.Accept requestID End SubPrivate Sub m_Wsk1_DataArrival(ByVal bytesTotal As Long) ...(这里还有发送文本数据的代码) Open FName For Binary As #1 ReDim InBuf(LOF(1)) As Byte Get 1, 1, InBuf Close 1 m_Wsk1.SendData Asc("B") For k = 1 To UBound(InBuf) m_Wsk1.SendData CByte(InBuf(k)) Next k m_Wsk1.SendData Asc("E") & Asc("N") & Asc("D") ... 接收方: Private Sub Form_Load() Wsk1.RemoteHost = "ServeName" Wsk1.RemotePort = 10 Wsk1.Connect End SubPrivate Sub Wsk1_Connect() Wsk1.SendData ("(启动发送命令,略)") End SubPrivate Sub Wsk1_DataArrival(ByVal bytesTotal As Long) Dim Buf() As Byte Wsk1.GetData Buf i = 0 ... Do While i < bytesTotal recvT = "" Flag = Buf(i) i = i + 2 recvEND = False Select Case Flag Case 84: 'T的ASCII值 ...(文本接收) Case 66: 'B的ASCII值 ReDim Preserve recvB(bytesTotal - i + 1) j = i Do While Not recvEND EndStr = "" recvB(i - j) = Buf(i) If i < (bytesTotal - 6) Then EndStr = Chr((Buf(i + 1) - 48) * 10 + Buf(i + 2) - 48) + _ Chr((Buf(i + 3) - 48) * 10 + Buf(i + 4) - 48) + _ Chr((Buf(i + 5) - 48) * 10 + Buf(i + 6) - 48) End If If EndStr = "END" Then recvEND = True i = i + 6 Else: recvEND = False End If i = i + 1 If i = bytesTotal And Not recvEND Then recvEND = True End If Loop End Select Loop End Sub
发送方:
Dim InBuf() as Byte
Private Sub Form_Load()
...
m_Wsk1.listen
...Private Sub m_Wsk1_ConnectionRequest(ByVal requestID As Long)
If m_Wsk1.State <> sckClosed Then m_Wsk1.Close
m_Wsk1.Accept requestID
End SubPrivate Sub m_Wsk1_DataArrival(ByVal bytesTotal As Long)
...(这里还有发送文本数据的代码)
Open FName For Binary As #1
ReDim InBuf(LOF(1)) As Byte
Get 1, 1, InBuf
Close 1
m_Wsk1.SendData Asc("B")
For k = 1 To UBound(InBuf)
m_Wsk1.SendData CByte(InBuf(k))
Next k
m_Wsk1.SendData Asc("E") & Asc("N") & Asc("D")
...
接收方:
Private Sub Form_Load()
Wsk1.RemoteHost = "ServeName"
Wsk1.RemotePort = 10
Wsk1.Connect
End SubPrivate Sub Wsk1_Connect()
Wsk1.SendData ("(启动发送命令,略)")
End SubPrivate Sub Wsk1_DataArrival(ByVal bytesTotal As Long)
Dim Buf() As Byte
Wsk1.GetData Buf
i = 0
...
Do While i < bytesTotal
recvT = ""
Flag = Buf(i)
i = i + 2
recvEND = False
Select Case Flag
Case 84: 'T的ASCII值
...(文本接收)
Case 66: 'B的ASCII值
ReDim Preserve recvB(bytesTotal - i + 1)
j = i
Do While Not recvEND
EndStr = ""
recvB(i - j) = Buf(i)
If i < (bytesTotal - 6) Then
EndStr = Chr((Buf(i + 1) - 48) * 10 + Buf(i + 2) - 48) + _
Chr((Buf(i + 3) - 48) * 10 + Buf(i + 4) - 48) + _
Chr((Buf(i + 5) - 48) * 10 + Buf(i + 6) - 48)
End If
If EndStr = "END" Then
recvEND = True
i = i + 6
Else: recvEND = False
End If
i = i + 1
If i = bytesTotal And Not recvEND Then
recvEND = True
End If
Loop
End Select
Loop
End Sub