91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

vb中利用winsock控件,tcp協(xié)議實現(xiàn)多客戶端連接

admin
2013年12月10日 22:12 本文熱度 6431

通信程序通常都是采用Client/Server形式。這就要求作為服務(wù)器的主機可以同時處理多個客戶的請求。因此在編寫服務(wù)器程序時要添加多個Winsock控件。在開始我們先加入兩個Winsock控件。其中一個用來偵聽網(wǎng)上請求信號,取名為Listener;另外一個為初始的連接口,取名叫Sock(0)。注意,后一個控件要設(shè)為動態(tài)數(shù)組的形式,以后當客戶增多時,可在這個控件基礎(chǔ)上動態(tài)增加。由于受資源限制,我們在本例中設(shè)定最多可以同時接納15個客戶。客戶機一般只與一個主機相連,因此程序只須一個Winsock進行連接就足夠了。這個程序要用到的控件較少,除了Winsock和Form控件外,只須再添加Commmand控件即可。下面是具體程序和詳細注釋。
******************************
服務(wù)器程序
******************************
Option Explicit
定義常量
Const BUSY As Boolean = False
Const FREE As Boolean = True
定義連接狀態(tài)
Dim ConnectState() As Boolean
Private Sub Form_Load()
ReDim Preserve ConnectState(0 To 1)
On Error Resume Next
ConnectState(0) = FREE
ConnectState(1) = FREE
’指定網(wǎng)絡(luò)端口號
Listener.LocalPort = 1011
‘開始偵聽
Listener.Listen
End Sub
Private Sub Listener_ConnectionRequest(ByVal requestID As Long)
Dim SockIndex As Integer
Dim SockNum As Integer
On Error Resume Next
Form1.Print requestID & "連接請求"
查找連接的用戶數(shù)
SockNum = UBound(ConnectState)
If SockNum > 14 Then
Form1.Print SockIndex & ""
Exit Sub
End If
查找空閑的sock
SockIndex = FindFreeSocket()
’如果已有的sock都忙,而且sock數(shù)不超過15個,動態(tài)添加sock
If SockIndex > SockNum Then
Load Sock(SockIndex)
End If
ConnectState(SockIndex) = BUSY
Sock(SockIndex).Tag = SockIndex
接受請求
Sock(SockIndex).Accept (requestID)
Form1.Print SockIndex & "接受請求"
End Sub

客戶斷開,關(guān)閉相應(yīng)的sock
Private Sub Sock_Close(Index As Integer)
If Sock(Index).State <> sckClosed Then
Sock(Index).Close
End If
ConnectState(Index) = FREE
Form1.Print Index & "close"
End Sub

接收數(shù)據(jù)
Private Sub Sock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim dx As Double
Form1.Print "數(shù)據(jù)來自" & Index
Sock(Index).GetData dx, vbDouble
Form1.Print "dx=" & dx
End Sub

尋找空閑的sock
Public Function FindFreeSocket()
Dim SockCount, i As Integer
SockCount = UBound(ConnectState)
For i = 0 To SockCount
If ConnectState(i) = FREE Then
FindFreeSocket = i
Exit Function
End Ifs
Next i
ReDim Preserve ConnectState(0 To SockCount + 1)
FindFreeSocket = UBound(ConnectState)
End Function

***************************
客戶程序
’***************************
Option Explicit
發(fā)送數(shù)據(jù)
Private Sub command1_Click()
Dim dx As Double
dx = 23.9
sock.SendData dx
MsgBox ("data sended")
End Sub

Private Sub Form_Load()
遠程主機名
sock.RemoteHost = "media2"
網(wǎng)絡(luò)端口
sock.RemotePort = 1011
發(fā)出連接命令
sock.Connect
Command1.Enabled = False
End Sub

服務(wù)器關(guān)閉
Private Sub sock_Close()
MsgBox ("socket closed")
End Sub

連接成功
Private Sub sock_Connect()
MsgBox ("socket connected")
Command1.Enabled = True
End Sub

該文章在 2013/12/10 22:12:03 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产乱国 | 欧美日韩成人免费 | 日韩不卡 | 国产综合24| 中文字幕第一页亚洲 | 国产在线一区观看 | 国产精品素人福利 | 三级网址 | 日本成人免费在线 | 国产91免费 | 日韩欧美综合在线 | 精品在线热 | 国偷自产a | 国产午夜亚洲精品理 | 国产疯狂伦交大片 | 国产无须下载的免 | 国产欧美日韩一 | 午夜成人鲁丝片韩国 | 欧美综合影视自拍 | 奇米影视77 | 精品91| 爱豆精品秘国产传媒 | 国产性爱在线播放 | 动漫h片在线 | 精品国产自在在线 | 国产系列亚洲精品 | 欧美在线视频一区 | 欧美在线综合 | 国产高清成人精品 | 国产嫖妓免费视频 | 乱辈通轩系列小 | 国产福利在线永久 | 福利视屏网 | 日韩精品中文字幕 | 欧美性:生活视频 | 制服丝袜诱惑在线 | 国产淫片免费看 | 欧美综合五月 | 欧美综合影视自拍 | 日韩一区二区三区波 | 91精品最新 |