MultiLink鐨刉inSock Server绋嬪紡
鍙戝竷: 2008-6-26 09:39 | 浣滆: admin | 鏌ョ湅: 2娆
鎴戜滑瑕佸厛鏈変竴涓蹇碉紝鍦╒B涓紝
1.涓涓猈inSock 鎺у埗椤(褰揝erver)鍙兘杩炵粨涓涓狢lient绔殑闇姹傦紝鎵浠erver瑕佸彉鎴愬彲澶氶噸
杩炵粨锛岃鏈夊涓猈inSock鎺у埗椤癸紝鎴戜滑涔熷彲浠ヤ娇鐢↙oad 鎸囦护鏉ュ姩鎬佷骇鐢
2.Server绔繀椤昏瀹氬ソ涓涓狶ocal Port 褰撲綔鍏禠isten鐨凱ort锛屾墍鏈塁lient绔殑RemotePort瑕
鎸囧畾Server 褰揕isten鐨凱ort Number锛屼互鏈緥鏉ヨ锛屾垜璁惧畾3128褰撲綔Server Listen鐨
Port锛岃屾垜鐨勭▼寮忎腑鏈変竴涓猈inSock Control (Winsock1(0))涓撻棬鍋歀isten鐨勫姩浣溿傚湪鏈
渚嬩腑锛屾垜鍙厑璁告湁4涓狢llient鍚屾椂杩炰笂鏉ワ紝鎵浠ユ垜鍦‵orm Load鏃讹紝渚垮姩鎬佷骇鐢4涓
WinSock 锛屽惈Listen 鐨勯偅涓涓竴鍏5涓猈inSock Control銆
3.鍦⊿erver绔紝濡傛灉ConnectionRequest Event浜х敓浜嗭紝浠h〃鏈塁lient绔彁鍑洪渶姹傦紝杩欐椂
鍊欙紝鎴戜滑瑕侀夊彇涓涓病鏈変娇鐢ㄧ殑WinSock Control鏉ュ拰Client杩炪
4.鎴戜滑鍦–lient涓紝璁惧畾LocalPort = 0 浠h〃浼氶夊彇涓涓┖鐫鐨凱ort鏉ュ拰Server鐨凱ort鏉ヨ繛
鍦⊿erver涓 Winsock1(i).Accept requestID 渚夸細鑷姩涓烘垜浠仛杩欎欢浜嬶紱杩欐椂锛屾垜浠細鐪
鍒癝erver绔殑浼欰ssign涓涓猂emotePort锛岃孋lient涔熶細Assign涓涓狶ocalPort锛岃繖娆$殑杩
绾夸究鏄忚繃杩欑粍杩炵嚎绠¢亾鏉ュ仛
璇ョ▼寮忚灏咰lient鐨勭▼寮忓仛鎴.Exe鍐嶆潵閲嶈琛岋紝涓擲erver鐨勭▼寮忓悓鏃朵篃瑕佹墽琛岋紝褰揅lient
绔殑Text1.Text = "Close" 鏉ラ佺粰Server鏃讹紝鍛婄煡Server璇onnection 鍙粨鏉
鍏朵粬鐩稿叧鐨勭煡璇嗚鏌elp鎴栧叾浠栦功
娉: GetData鏂规硶 鐨勭涓涓弫鏁 :濡傛灉浼犲洖鐨勮祫鏂欐槸String鍒欏鍛婃垚String锛岃嫢鍛婃垚Variant
鍦╒B鐜涓嬫病闂锛屼絾鍙樻垚.exe寰屼細鏈夐敊(Automation Error)锛涘綋鐒讹紝鑻ヤ紶鐨勬槸Binary
鐨勮祫鏂欙紝閭e氨浣跨敤ByteArray鏉ュ仛
'浠ヤ笅鏄疭erver绔▼寮忥紝闇涓涓狶istBox锛屼竴涓猈inSock鎺у埗椤
Option Explicit
Private Sub Form_Load()
Load Winsock1(1)
Load Winsock1(2)
Load Winsock1(3)
Load Winsock1(4)
Winsock1(0).LocalPort = 3128 '璁惧畾Listen鐨凱ort鏄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
'鍦╒B鐜涓嬫病闂锛屼絾鍙樻垚.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
'浠ヤ笅鏄疌lient绔▼寮忥紝闇涓涓狶istBox锛屼竴涓猈inSock鎺у埗椤癸紝涓変釜Command Button
'涓庝竴涓猅extBox鐢ㄦ潵浼犺祫鏂欙紝
Option Explicit
Private Sub Command1_Click()
Winsock1.LocalPort = 0'浠ヤ究鑷姩浜х敓Local Port
Winsock1.Connect "140.116.253.247" '璁惧畾鏀规垚鎮 Server 鐢佃剳鐨処P 鍙风爜
End Sub
Private Sub Command2_Click()
Winsock1.SendData "Close" '閫氱煡Server绔疌lose
DoEvents
Winsock1.Close
End Sub
Private Sub Command3_Click()
Winsock1.SendData Text1.Text
End Sub
Private Sub Form_Load()
Winsock1.RemotePort = 3128 '璁惧畾涓嶴erver绔仛Listen鐨凱ort鐩稿悓
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




发表于 2009-1-5 19:48
| 











