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

VB Winsock控件創(chuàng)建多個(gè)連接

admin
2013年12月11日 8:54 本文熱度 5780

VB寫的一個(gè)簡單的服務(wù)端程序,


服務(wù)器端程序:
Private Sub Form_Load()
tcpserver.LocalPort = 1001 '將 LocalPort 屬性設(shè)置為一個(gè)整數(shù)。
tcpserver.Listen '然后調(diào)用 Listen 方法。
End Sub



Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpserver.State <> sckClosed Then tcpserver.Close '檢查控件的 State 屬性是否為關(guān)閉的。 '如果不是, '在接受新的連接之前先關(guān)閉此連接。
tcpserver.Accept requestID '接受具有 requestID 參數(shù)的 '連接。
msgbox("有人連接服務(wù)端")

End Sub



客服端程序


Private Sub Form_Load()
tcpClient.RemoteHost = "192.168.1.2"
tcpClient.RemotePort = 1001
End Sub


Private Sub cmdConnect_Click() '連接按鈕
tcpClient.Connect
MsgBox ("連接服務(wù)器成功")
End Sub


運(yùn)行后,啟動服務(wù)端,然后啟動客戶端,點(diǎn)“連接”按鈕,客服端端跳出窗口“連接服務(wù)器成功”,服務(wù)端跳出窗口“有人連接服務(wù)端”。表示雙方建立了連接。這個(gè)時(shí)候關(guān)閉客戶端,然后再啟動,點(diǎn)“連接”按鈕,就只是跳出連接服務(wù)器成功(程序設(shè)置不完美)。然后在輸入框中輸入向服務(wù)端發(fā)送數(shù)據(jù),出現(xiàn)“錯(cuò)誤“40006” 所需事物請求的錯(cuò)誤協(xié)議連接或連接狀態(tài)”。這個(gè)時(shí)候發(fā)現(xiàn)第二次連接就不行,看來服務(wù)端只是支持單個(gè)連接,第二次連接相當(dāng)于,第二個(gè)連接,就找不到服務(wù)器,這個(gè)錯(cuò)誤跟沒有啟動服務(wù)端程序的錯(cuò)誤是一樣,說明客戶端找不到服務(wù)端。
解決辦法:創(chuàng)建控件數(shù)組
上面設(shè)計(jì)的基本服務(wù)器只能接受一個(gè)連接請求。通過創(chuàng)建控件數(shù)組,使用一個(gè)控件也可以同時(shí)接受多個(gè)連接請求。利用這種方法,不需要關(guān)閉連接,而只需創(chuàng)建新的控件實(shí)例(通過設(shè)置其索引屬性),然后在新的實(shí)例上調(diào)用 Accept 方法。

下面的代碼假定名為 sckServer 的窗體上有一個(gè) Winsock 控件,它的 Index 屬性被設(shè)置為 0;因此控件是控件數(shù)組的一部分。在聲明部分,聲明了一個(gè)模塊級的變量 intMax。在窗體的 Load 事件中,intMax 被設(shè)置為 0,數(shù)組中第一個(gè)控件的 LocalPort 屬性被設(shè)置為 1001。然后調(diào)用控件的 Listen 方法,使之成為“監(jiān)聽”控件。在連接請求到達(dá)時(shí),代碼將檢測 Index 是否為 0(“監(jiān)聽”控件的值)。如果為 0,監(jiān)聽控件將增加 intMax 的值,并使用該號碼來創(chuàng)建新的控件實(shí)例。然后,使用新的控件實(shí)例接受連接請求。


Private intMax As Long

Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
End If
End Sub


下面涉及到sckServer的地方全部用上 sckServer(intMax),就可以了


這樣即使客戶端重新啟動,一樣可以連接到服務(wù)端。


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
中文字幕1级乱日 | 婷婷国产精品一区二区免费 | 午夜色福利视频 | 一级a一片久久久精品网络 久久国产精品系列 | 人人爱草免费国产视频 | 亚洲精品一级a级精精彩在线 |