亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VB6實現局域網多站點互連手冊

2019-11-18 17:41:16
字體:
來源:轉載
供稿:網友
這里對Winsock控件的屬性、方法和事件的介紹限于篇幅就不介紹了,下面以最簡單的C/S模式下一臺服務器和一臺客戶機的連接來說明其整個連接過程。

  用框圖表示如圖1所示。首先運行服務器端的程序,使TcpServer處于監聽狀態,然后運行客戶機端的程序,單擊【連接服務器】按鈕后,客戶機端調用Connect方法呼叫服務器(根據RemoteHostient,TcpServer(0)用來對客戶機進行監聽,TcpServer(2)和TcpServer(3)是動態加載用來接受相應的客戶機的請求來建立連接的。而TcpClient(2)和TcpClient(3)不是動態加載的,而是在Form_Load初始化過程中加載,用來呼叫相應的服務器。

  這樣也是可以實現多機互連的,不過也有些問題。如果1號機作為客戶機呼叫2號機并已經收到2號機的響應建立了一條通訊鏈路,這時1號機又作為服務器接收到2號機的呼叫請求,并且也建立了一條通訊鏈路。這樣二臺機之間建立了兩條鏈路,理論上兩臺機只要有一條鏈路就可以正常通訊,現在建立了兩條鏈路,收發數據是否正常呢?通過測試,收發數據不會出錯:當1號機給2號機發數據時,是通過1號機的TcpServer(2)或TcpClient(2)發送數據給2號機,而2號機是通過其TcpClient(1)或TcpServer(1)接收1號機的數據,雙方兩條鏈路互不干擾。不過這種方案還是不太可取,因為加載控件需要占用內存資源,每兩臺機之間其實只需一條鏈路就能正常通訊,現在又多了條鏈路,這對系統有限的資源是極大的浪費。

  方案三:三臺機有差互連

  先解釋一下什么叫有差互連。具體做法是:1號機只作為服務器監聽2號和3號機的呼叫請求而不呼叫它們;2號機既是客戶機又是服務器:作為客戶機只呼叫1號機,而作為服務器監聽3號機的呼叫請求;3號機只作為客戶機對1號機和2號機進行呼叫,而不具備服務器監聽的功能。所以說這幾臺機的連接是有差的,這種連接方式不會在兩臺機之間建立兩條鏈路,因為網絡中任意兩臺機只有一臺可以呼叫對方或監聽對方的呼叫請求,這樣無論如何都不會產生兩條通訊鏈路,節省了系統資源,又滿足了局域網中任意兩臺機互連的要求,由此看來這個方案是最優方案。

  下面介紹方案三的實現過程。

  1號機

  1號機的窗體(Form)上放置兩個Winsock控件,一個名為TcpLsn,負責監聽2號機和3號機的呼叫請求,另外一個為TcpConn,這是個控件數組,Index為2,即已經加載了TcpConn(2),這個控件是為了和2號機建立連接。在初始化過程中(Form_Load)設置服務器的監聽端口號(TcpLsn.LocalPort)并使其處于監聽狀態(TcpLsn.Listen),并置與客戶機連接成功的標志(TcpConnected數組,布爾型常量)為False。當TcpLsn監聽到某個客戶機的呼叫請求后(具體是哪個客戶機是根據客戶機IP地址判斷),在TcpLsn的ConnectionRequest事件中動態加載TcpConn控件并調用Accept方法接受客戶機的請求,與其建立連接(如果客戶機是2號機,則無需再加載控件,因為在Form_Load中已經加載過了)。要注意的是,TcpLsn只是用來監聽客戶機的呼叫請求,而不是用來與客戶機建立連接的,TcpConn控件數組才是與客戶機建立連接的。當某一客戶機斷開連接時,會觸發Tcpconn控件數組的Close事件,在這里可以根據客戶機的IP地址來調用Close方法關閉與其相連的Tcpconn控件,并動態卸載之。同樣TcpConn(2)不能卸載,因為其不是動態加載的。

  2號機

  2號機窗體(Form)上也放置兩個Winsock控件,一個名為TcpLsn,負責監聽3號機的呼叫請求,另外一個為TcpConn,這是個控件數組,Index為1,即已經加載了TcpConn(1),這個控件是為了與1號機建立連接。在初始化過程中(Form_Load)同樣要設置2號機作為服務器的監聽端口號,然后使其處于監聽狀態,還要設置與其他幾個站點連接成功的標志:TcpConnected(數組)。2號機作為服務器監聽的過程同上,而呼叫1號機是通過VB6的定時器(Timer)實現的,定時器的作用是每隔一段時間(可自行設定間隔事件)觸發Timer事件,即執行Timer事件中的代碼,利用這個原理就可以實現一運行此程序就自動進行呼叫工作,首先將定時器間隔時間定為1000毫秒(定時器命名為TimConn,TimConn.Interval=1000),然后在定時時間到事件中(TimConn_Timer)調用TcpConn的Connect方法呼叫1號機,當然要加一個判斷:當TcpConnected(1)=False且TcpConn(1).State=sckClosed時才進行呼叫。

  在客戶機調用了TcpConn方法后,其連接狀態是sckConnecting(正在連接服務器,值為6)。如果此時1號機在一段時間內(連接服務器超時時間)沒有接受請求或者根本沒有開啟,那么就會觸發連接錯誤事件(TcpConn_Error),這時連接狀態是sckError(連接錯誤,值為9),就無法再進行連接服務器的工作了,如果1號機此時打開,客戶機也不會再呼叫服務器了。要解決這個問題,可以在TcpConn的錯誤事件中(TcpConn_Error)加上一條語句:TcpConn(Index).Close即在錯誤事件中關閉當前的連接,使當前TcpConn控件狀態處于sckClosed,這樣在下一次的定時時間到事件中客戶機又能呼叫1號機了。呼叫1號機成功后,不要忘記在TcpConn的Connect事件中置連接1號機成功的標志位。同樣要注意關閉事件中不能卸載TcpConn(1)。

  3號機

  3號機在所有站點中只呼叫1號機和2號機。所以只要一個Winsock控件數組即可,命名為TcpClient,Index=1。在程序初始化過程中,加載呼叫服務器的所有Winsock控件:LoadTcpClient(2)
TcpClient(1)已經放在窗體中了,故不必重復加載。還要設置連接成功的標志位(TcpConnected數組為False),并設置定時器間隔時間。然后在定時時間到事件中調用TcpClient的Connect方法連接服務器,這與2號機作為客戶機呼叫服務器的過程類似,同樣要在TcpClient的連接錯誤事件中添加以下語句:TcpClient(Index).Close。要注意的是在服務器的斷開連接觸發的客戶機關閉事件中(TcpClient_Close)只需要置標志位,而不能卸載TcpClient控件數組,因為其不是動態加載的。

  到此為止,基本上實現了運行此程序即進行多機互連的功能。

  典型問題解析

  1.各個站點建立連接后關閉3號機的程序,在其它的站點就會彈出對象已加載的錯誤提示。出現這個錯誤的可能原因是Winsock控件已經加載,而后又執行了一次加載動作。不過實驗證明不是此Winsock控件被重復加載。在微軟公司的官方網站,VB6最新的ServicePack5補?。⊿P5)的說明文檔中有這樣一條很重要的修正說明:重復加載或卸載Winsock控件會引起內存泄露。這一修正是不是可以針對用Winsock控件實現網絡連接及通訊的程序呢?理論實踐證明了這一猜測的真實性。下載完SP5并成功安裝后,將程序原封不動運行一遍,“對象已加載”的錯誤窗口就再沒出現過,這個問題也就成功的解決了。

  2.由于設置了客戶機的本地端口號(LocalPort),導致必須先關閉服務器再關閉客戶機才能在下一次正常連接以及客戶機異常退出時(比如客戶機突然停電)導致下次無法正常連接。這是由于沒有釋放連接端口號造成的。這個錯誤的解決方法是不要設置客戶機的本地端口號;如果非得設置,那么可以利用動態改變服務器監聽端口號和客戶機呼叫端口號的方法。具體做法是在服務器的Form_Load中改變監聽端口號,在客戶機的Winsock控件錯誤事件中改變呼叫端口號,端口號只要用兩個就可以了(如1000和1001)。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美综合激情网| 欧美日韩在线观看视频小说| 一区二区在线视频播放| 日韩a**站在线观看| 久久久之久亚州精品露出| 久国内精品在线| 亚洲无亚洲人成网站77777| 久久人体大胆视频| 国产精品入口免费视频一| 国产在线久久久| 国内精品一区二区三区| 日韩美女视频中文字幕| 91久久综合亚洲鲁鲁五月天| 91国在线精品国内播放| 久久综合电影一区| 中文字幕在线成人| 国内精品久久久久影院 日本资源| 精品国产精品自拍| 91黑丝在线观看| 亚洲精品国产成人| 色悠久久久久综合先锋影音下载| 亚洲第一区在线| 国产91精品在线播放| 久久人人看视频| 国产精品揄拍一区二区| 欧美成人激情图片网| 久久久国产精品x99av| 久久精品久久久久久国产 免费| 91性高湖久久久久久久久_久久99| 亚洲精品网站在线播放gif| 久久久久亚洲精品成人网小说| 国产一区二区三区四区福利| 国产精品jvid在线观看蜜臀| 久久久久久久97| 日韩成人在线视频网站| 久久91亚洲精品中文字幕| 亚洲自拍偷拍福利| 国产精品久久国产精品99gif| 欧美日韩亚洲精品一区二区三区| 亚洲人成网站色ww在线| 国产精品黄视频| 久久伊人精品天天| 亚洲丝袜一区在线| 日韩中文字幕精品| 亚洲欧洲视频在线| 人妖精品videosex性欧美| 国产精品久久久精品| 亚洲欧美日韩综合| 国产成人啪精品视频免费网| 久久久之久亚州精品露出| 久久在线观看视频| 欧美最猛性xxxxx(亚洲精品)| 97成人精品区在线播放| 精品久久久91| 亚洲欧美制服中文字幕| 国产精品专区一| 中文字幕亚洲激情| 国产视频欧美视频| 亚洲xxxxx电影| 久久九九热免费视频| 欧美激情一区二区三区久久久| 欧美一级大片在线免费观看| 亚洲综合社区网| 精品视频—区二区三区免费| 九九精品视频在线| 日本欧美爱爱爱| 免费不卡欧美自拍视频| 91欧美激情另类亚洲| 日本国产高清不卡| 国产日韩换脸av一区在线观看| 国产精品午夜国产小视频| 欧美高清视频免费观看| 亚洲欧美国产另类| 国产精品久久91| 91日本视频在线| 在线观看日韩视频| 久久久99久久精品女同性| 欧美成人全部免费| 国产精品福利片| 成人在线中文字幕| 中文字幕亚洲精品| 久久久久女教师免费一区| 啪一啪鲁一鲁2019在线视频| 国产精品久久久久久av福利| 日韩成人在线视频网站| 久久久www成人免费精品| 国产精品91免费在线| 秋霞av国产精品一区| 亚洲精品国产精品国自产在线| 91欧美精品午夜性色福利在线| 国产九九精品视频| 欧美大荫蒂xxx| 国产精品精品国产| 亚洲天堂av电影| 亚洲一区亚洲二区亚洲三区| 国产一区二区三区网站| 69精品小视频| 亚洲精品自拍视频| xx视频.9999.com| 亚洲一区二区国产| 九色成人免费视频| 欧美丰满少妇xxxxx| 黄色91在线观看| 97人人爽人人喊人人模波多| 国产精品jizz在线观看麻豆| 日韩欧美精品网站| 久久69精品久久久久久国产越南| 精品久久中文字幕久久av| 一区二区三区视频在线| 欧美xxxx18国产| 久久91亚洲精品中文字幕| www亚洲精品| 韩日欧美一区二区| 亚洲网在线观看| 久久久久久久久爱| 色综合视频网站| 欧美日韩福利在线观看| 欧美性猛xxx| 国产日韩欧美一二三区| 欧美理论片在线观看| 久久久免费观看视频| 国产大片精品免费永久看nba| 日韩网站免费观看| 国产日韩精品在线观看| 伊是香蕉大人久久| 91精品久久久久久久久青青| 国产精品网站大全| 最近2019中文字幕大全第二页| 久久九九全国免费精品观看| 国产精品99久久久久久www| 午夜精品一区二区三区在线视| 欧美性xxxx| 亚洲xxxxx电影| 欧美日韩亚洲一区二区| 亚洲精品国精品久久99热| 青草青草久热精品视频在线观看| 欧美最猛性xxxxx(亚洲精品)| 亚洲天堂成人在线视频| 免费av一区二区| 欧美成人午夜视频| 91色p视频在线| 国产精品v片在线观看不卡| 成人h视频在线| 亚洲欧美国产视频| 亚洲激情成人网| 欧美一级免费看| 高清日韩电视剧大全免费播放在线观看| 最好看的2019的中文字幕视频| 精品露脸国产偷人在视频| 日韩精品在线免费观看| 精品久久久久久亚洲精品| 成人精品久久一区二区三区| 国产精品福利在线观看| 欧美电影免费观看网站| 91精品视频一区| 欧美人交a欧美精品| 欧美激情小视频| 国产乱肥老妇国产一区二| 亚洲精品欧美日韩| 亚洲综合中文字幕在线| 亚洲欧美日韩一区二区在线| 亚洲成人教育av| 91精品国产综合久久香蕉| 九九热99久久久国产盗摄|