;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
MultiLink鐨刉inSock Server绋嬪紡 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VB >> Internet >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

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

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆