• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      局域網(wǎng)信息發(fā)布程序的設(shè)計(jì)與實(shí)現(xiàn)

      2012-07-17 10:50:34趙曉鳳
      通信電源技術(shù) 2012年5期
      關(guān)鍵詞:服務(wù)器端控件局域網(wǎng)

      趙曉鳳

      (蘇州工業(yè)園區(qū)工業(yè)技術(shù)學(xué)校,江蘇 蘇州215123)

      在局域網(wǎng)中發(fā)布信息可以不依賴基于因特網(wǎng)開發(fā)的信息發(fā)布交流工具,這種方式很好地解決了因外網(wǎng)不穩(wěn)定而造成信息中斷的問題,而且有很強(qiáng)的保密性,適合企事業(yè)單位使用。本文就如何設(shè)計(jì)開發(fā)局域網(wǎng)信息發(fā)布系統(tǒng)進(jìn)行了有效的嘗試。

      1 開發(fā)流程圖

      局域網(wǎng)信息發(fā)布系統(tǒng)開發(fā)流程如圖1所示。

      圖1 局域網(wǎng)信息發(fā)布系統(tǒng)開發(fā)流程

      2 局域網(wǎng)信息發(fā)布系統(tǒng)設(shè)計(jì)原理

      2.1 網(wǎng)絡(luò)傳輸所需協(xié)議

      傳輸協(xié)議有很多種,本文開發(fā)局域網(wǎng)信息發(fā)布系統(tǒng)主要應(yīng)用TCP協(xié)議,通過TCP協(xié)議把本地計(jì)算機(jī)和遠(yuǎn)程計(jì)算機(jī)進(jìn)行連接。TCP協(xié)議要求必須先建立連接,然后才被允許數(shù)據(jù)傳輸。能被利用開發(fā)局域網(wǎng)信息發(fā)布系統(tǒng)的協(xié)議還有UDP協(xié)議。UDP協(xié)議的特點(diǎn)是在傳輸數(shù)據(jù)前,不進(jìn)行連接請(qǐng)求而直接發(fā)送,在傳輸信息上來看這樣做很不可靠。

      2.2 Winsock控件

      要實(shí)現(xiàn)局域網(wǎng)通信,VB中提供了一種方便易行的方法,那就是Winsock控件。這樣設(shè)計(jì)者就可以不必了解數(shù)據(jù)傳輸細(xì)節(jié),非常容易地進(jìn)行程序設(shè)計(jì)。

      VB中Winsock控件能使用兩種協(xié)議:TCP協(xié)議及UDP協(xié)議。TCP協(xié)議能保證傳輸數(shù)據(jù)安全到達(dá)目的地,而UDP協(xié)議只是將數(shù)據(jù)傳送到網(wǎng)絡(luò)上,不檢查數(shù)據(jù)是否到達(dá)目的地,因此要進(jìn)行安全通信控制和實(shí)時(shí)會(huì)話最好采用TCP協(xié)議。

      Winsock控件有很多的屬性、方法及事件,以下是設(shè)計(jì)時(shí)可能會(huì)常使用的幾種屬性、方法和事件。

      (1)屬性

      Index:控件索引值

      LocalHostName:本機(jī)名

      LocalIP:本機(jī)IP

      LocalPort:通信端口

      Name:實(shí)例名

      Protocol:所用協(xié)議,主要指TCP和UDP

      RemoteHost:服務(wù)器名

      RemoteHostIP:服務(wù)器ip

      RemotePort:服務(wù)器偵聽端口

      State:控件連接狀態(tài),即連接與未連接

      (2)方法

      Accept():接受連接請(qǐng)求

      Close():關(guān)閉該連接

      Connect():請(qǐng)求與遠(yuǎn)程計(jì)算機(jī)連接

      GetData():從接收緩沖區(qū)讀取數(shù)據(jù)

      Listen():偵聽連接請(qǐng)求

      SendData():發(fā)送數(shù)據(jù)

      (3)事件

      Close():關(guān)閉連接時(shí)發(fā)生

      Connect():建立連接時(shí)發(fā)生

      ConnectionRequest():客戶端請(qǐng)求與服務(wù)器程序連接時(shí)發(fā)生

      DataArrival():數(shù)據(jù)到達(dá)時(shí)發(fā)生Error():發(fā)生錯(cuò)誤時(shí)發(fā)生

      2.3 設(shè)計(jì)思路

      遠(yuǎn)程計(jì)算機(jī)的連接原理:TCP協(xié)議要求必須使用服務(wù)器才能建立連接、通信,加上需要分別開發(fā)客戶端程序和服務(wù)器端程序。

      2.3.1 設(shè)計(jì)客戶端程序需要明確項(xiàng)

      (1)服務(wù)器計(jì)算機(jī)的名稱以及Ip地址,利用RemoteHost屬性調(diào)用。

      (2)服務(wù)器計(jì)算機(jī)的通信端口,利用RemotePort屬性調(diào)用。

      (4)服務(wù)器建立連接后,進(jìn)行數(shù)據(jù)的傳送和捕捉,利用事件DataArrival和方法SendData與GetData。

      2.3.2 服務(wù)器端程序的主體

      (1)設(shè)置服務(wù)器的通信端口。

      (2)調(diào)用偵聽,捕捉客戶機(jī)的請(qǐng)求,利用Listen方法。

      (3)接到連接請(qǐng)求后,建立連接,利用Accept方法。

      (4)服務(wù)器建立連接后,進(jìn)行數(shù)據(jù)的捕捉和傳送,利用事件DataArrival和方法SendData與GetData。

      3 局域網(wǎng)信息發(fā)布系統(tǒng)實(shí)現(xiàn)方法

      3.1 服務(wù)器端設(shè)置

      首先設(shè)置其IP地址為:10.72.83.1,在防火墻-設(shè)置本地端口localPort設(shè)為1200(使用不常用的端口,否則會(huì)發(fā)生沖突),在服務(wù)器端程序加入一個(gè)winsock控件,名稱為changgongserver(0),這樣就可以在運(yùn)行時(shí)動(dòng)態(tài)地增減控件,便于與多個(gè)計(jì)算機(jī)進(jìn)行對(duì)話。在主窗體Load事件中的代碼如下。

      changgongserver(0).bind

      changgongserver(0).LocalPort

      阿什哈達(dá)摩崖石刻始刊于清德宗光緒十七年(1891)吉林將軍長(zhǎng)順監(jiān)修的《吉林通志·金石志》卷120,但文字著錄錯(cuò)誤較多,不足為研究的依據(jù)。其后陸續(xù)有人親赴現(xiàn)地進(jìn)行調(diào)查和墨拓,他們所著錄的文字,雖然基本已趨于一致,但個(gè)別地方仍略有不同。因此,1957年5月,吉林省博物館派人實(shí)地調(diào)查,并作了記錄、照相和墨拓。1972年,吉林省博物館又做了一次調(diào)查核對(duì)。

      ‘用于綁定端口號(hào)或者在Winsock

      控件屬性中設(shè)置也可以

      ‘偵聽客戶機(jī)的請(qǐng)求

      changgongserver(0).listern

      3.2 通信實(shí)現(xiàn)過程

      3.2.1 建立連接

      在客戶端程序中,添加 Winsock控件,方法是在工具欄中右擊部件,查找到對(duì)應(yīng)部件選中確認(rèn)即可。在Winsock控件的屬性窗口中RemoteHostIP(即服務(wù)器IP)為”10.72.83.1”,RemotePort(即服務(wù)器偵聽客戶機(jī)請(qǐng)求的端口)=1200。

      為了傳輸信息,必須建立通信連接,客戶端必須要發(fā)出請(qǐng)求,實(shí)現(xiàn)代碼為:changgongconnect.connect changgongconnect.RemoteHost,changgongconnect.RemotePort,服務(wù)器接收到請(qǐng)求后,通過 ConnectRequest事件調(diào)用連接,具體代碼實(shí)現(xiàn)如下:

      Private sub changgongserver_connectrequest(Index as Integer,Byval requestid as long)

      dim simple as string//用于存儲(chǔ)客戶端IP

      dim I as integer//

      On Error GoTo ErrHandle

      simple=changgongserver(0).RemoteHostIP//獲得登錄者地址信息

      X=1

      Do while X<=changgongserver.ubound//檢查該地址是否已存在

      If changgongserver(X).RemoteHostIP=simple then//如果存在的話就不必加載新的控件

      Changgongserver(X).Accept requested

      Exit sub

      End If

      X=X+l

      loop

      load changgongserver(X)//加載新的控件

      changgongserver(X).a(chǎn)ccept requested

      End sub

      3.2.2 客戶端傳送實(shí)現(xiàn)

      首先設(shè)置在客戶端窗體程序中加入主體控件,主要有兩個(gè):commond控件“send”和文本框控件。文本框控件的name屬性設(shè)為txt_info,即為需要傳送的信息或數(shù)據(jù)。

      在 “send”控件代碼窗口中加入如下代碼:

      dim userinfo as string

      userinfo=txt_info.text

      sckconnect.SendData userinfo

      3.2.3 服務(wù)器端數(shù)據(jù)的接收

      連接建立后,服務(wù)器端捕獲到客戶端發(fā)出的信息后,通過DataArrival事件調(diào)用GetData方法完成數(shù)據(jù)的接收工作,服務(wù)器端DataArrival事件代碼窗口中加入以下代碼:

      Private sub changgongserver_DataArrival(Index as integer,Byval BytesTotal as long)

      dim clientdata as string

      ‘定義字符串變量,用于接收數(shù)據(jù)

      changgongserver(1).GetData clientdata,vbstring

      ‘服務(wù)器捕獲客戶端發(fā)出的信息,并‘把信息存入到clientdata變量中

      end sub

      為了讓每個(gè)用戶都可以收到,還要在服務(wù)端WINsock控件中的DataArrival事件中加入數(shù)據(jù)的轉(zhuǎn)發(fā)語句,傳送給已經(jīng)與主機(jī)建立連接的所有客戶端,實(shí)現(xiàn)代碼如下:

      For info=l to changgongserver.Count Step 1

      if changgongserver(X).state=changgongClosed then‘檢測(cè)連接狀態(tài)

      Else

      Changgongserver(X).SendData client data ‘轉(zhuǎn)發(fā)數(shù)據(jù)

      End If

      next info

      3.2.4 客戶端程序接收數(shù)據(jù)

      在數(shù)據(jù)到達(dá)客戶端后,同時(shí)觸發(fā)客戶端的Data-Arrival事件,在該事件中仍然調(diào)用GetData方法對(duì)數(shù)據(jù)進(jìn)行接收工作:

      Private sub changgongserver_DataArrival(Index as integer,Byval BytesTotal as long)

      dim serverdata as string定義變量,用于接收

      changgongserver(1).GetData serverdata,vbstring‘存在變量中

      end sub

      3.2.5 程序的關(guān)閉

      在關(guān)閉應(yīng)用程序前,先要關(guān)閉連接,在窗體unload事件中加入如下代碼:

      Private sub myform_unload(cancel as integer)

      if changgongconnect.state<>0then

      changgongconnect.Close()

      end if

      end sub

      4 結(jié)束語

      本程序僅僅利用了vb語言中Winsock控件的強(qiáng)大功能中的一部分,即調(diào)用TCP協(xié)議實(shí)現(xiàn)局域網(wǎng)的相互通信。要實(shí)現(xiàn)功能更強(qiáng)、更完備的通信系統(tǒng),獲得良好的兼容性與容錯(cuò)性,還需要深入地研究。

      猜你喜歡
      服務(wù)器端控件局域網(wǎng)
      基于VPN的機(jī)房局域網(wǎng)遠(yuǎn)程控制系統(tǒng)
      電子制作(2019年16期)2019-09-27 09:35:04
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      基于802.1Q協(xié)議的虛擬局域網(wǎng)技術(shù)研究與實(shí)現(xiàn)
      電子制作(2017年17期)2017-12-18 06:40:48
      局域網(wǎng)性能的優(yōu)化
      電子制作(2017年8期)2017-06-05 09:36:15
      在Windows中安裝OpenVPN
      網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
      就這樣玩會(huì)VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      基于Struts的Web應(yīng)用系統(tǒng)數(shù)據(jù)驗(yàn)證
      在PowerBuUder中利用WinSock控件制作簡(jiǎn)單的Web服務(wù)器
      醴陵市| 响水县| 福州市| 永宁县| 葵青区| 高安市| 白银市| 青铜峡市| 景泰县| 紫阳县| 吴川市| 天镇县| 丰原市| 海晏县| 怀仁县| 左云县| 新乡县| 务川| 汾阳市| 抚州市| 临湘市| 玉溪市| 华池县| 武乡县| 额济纳旗| 临江市| 珠海市| 奉节县| 蕲春县| 灵宝市| 泰州市| 金华市| 武乡县| 凤翔县| 缙云县| 屏东市| 伊宁市| 醴陵市| 互助| 海城市| 吉隆县|