'以下是Server端程式,需一个ListBox,一个WinSock控制项
Option Explicit
Private Sub Form_Load()
Load Winsock1(1)
Load Winsock1(2)
Load Winsock1(3)
Load Winsock1(4)
Winsock1(0).LocalPort = 3128 '设定Listen的Port是3128,请自行改成您的电脑没冲突的号码
Winsock1(0).Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim i As Long
For i = 0 To 4
Winsock1(i).Close
Next
Unload Winsock1(1)
Unload Winsock1(2)
Unload Winsock1(3)
Unload Winsock1(4)
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim i As Long
For i = 1 To 4
If Winsock1(i).State = sckClosed Then
Winsock1(i).Accept requestID
List1.AddItem "Local Port=" + Str(Winsock1(i).LocalPort) + " RemotePort = " + Str(Winsock1(i).RemotePort)
Exit For
End If
Next
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'Dim mydata As Variant
Dim mydata As String '注:如果传回的资料是String则宣告成String,若告成Variant
'在VB环境下没问题,但变成.exe後会有错(Automation Error)
Winsock1(Index).GetData mydata, vbString
List1.AddItem "From Socket" + Str(Index) + " " + mydata
Winsock1(Index).SendData "WinSock" + Str(Index) + "Reply"
If mydata = "Close" Then
Winsock1(Index).Close
End If
End Sub
'以下是Client端程式,需一个ListBox,一个WinSock控制项,三个Command Button
'与一个TextBox用来传资料,
Option Explicit
Private Sub Command1_Click()
Winsock1.LocalPort = 0 '以便自动产生Local Port
Winsock1.Connect "140.116.253.247" '设定改成您 Server 电脑的IP 号码
End Sub
Private Sub Command2_Click()
Winsock1.SendData "Close" '通知Server端Close
DoEvents
Winsock1.Close
End Sub
Private Sub Command3_Click()
Winsock1.SendData Text1.Text
End Sub
Private Sub Form_Load()
Winsock1.RemotePort = 3128 '设定与Server端做Listen的Port相同
Command1.Caption = "Connect"
Command2.Caption = "Close"
Command3.Caption = "Send"
List1.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Winsock1.State <> sckClosed Then
Winsock1.SendData "Close"
DoEvents
Winsock1.Close
Winsock1.LocalPort = 0
End Sub
Private Sub Winsock1_Connect()
If Winsock1.State = sckConnected Then
List1.AddItem "Connected! LocalPort =" + Str(Winsock1.LocalPort) + " RemptePort = " + Str(Winsock1.RemotePort)
End If
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim mydata As String
Winsock1.GetData mydata, vbString
List1.AddItem mydata
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
List1.AddItem Description
End Sub