小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用Visual Basic也可以實(shí)現(xiàn)“P2P”

 玉雪龍山999 2012-02-14

用Visual Basic也可以實(shí)現(xiàn)“P2P”

發(fā)布時(shí)間:2008-04-03 10:38:44  來(lái)源:編程愛(ài)好者網(wǎng)站  作者:編程愛(ài)好者網(wǎng)站  點(diǎn)擊:277

文/北京 張維

  Winsock控件是VB的新增功能,它解決了以往應(yīng)用VB編程時(shí)網(wǎng)絡(luò)中應(yīng)用程序之間無(wú)法實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信的難題。Winsock使用的TCP協(xié)議和UDP協(xié)議允許建立并保持一個(gè)到遠(yuǎn)程計(jì)算機(jī)上的連接,且可以在連接結(jié)束之前實(shí)時(shí)地進(jìn)行數(shù)據(jù)交換。用戶僅通過(guò)設(shè)置屬性并借助事件處理就能夠輕而易舉地連接到一個(gè)遠(yuǎn)程的計(jì)算機(jī)上,而且只用兩個(gè)命令就可以實(shí)現(xiàn)數(shù)據(jù)交換。


  使用TCP協(xié)議時(shí),如果需要?jiǎng)?chuàng)建一個(gè)客戶應(yīng)用程序,就必須識(shí)別服務(wù)器的名稱或IP地址。應(yīng)用程序的通信端口隨時(shí)都將仔細(xì)監(jiān)測(cè)對(duì)方發(fā)出的消息,這是系統(tǒng)進(jìn)行可靠連接的保證。一旦連接發(fā)生,任何一方都可以通過(guò)SendData發(fā)送和接收數(shù)據(jù),并借助GetData把自己的數(shù)據(jù)分離出來(lái)。傳送數(shù)據(jù)時(shí),需要先設(shè)定客戶機(jī)的LocalPort屬性,服務(wù)器則只需要把RemoteHost屬性設(shè)定為客戶機(jī)以太網(wǎng)的地址,并設(shè)定與客戶機(jī)LocalPort屬性相同的端口地址,借助SendData方法開始發(fā)送消息。客戶機(jī)則在GetData事件中通過(guò)DataArrival事件分離出發(fā)送的信息。一個(gè)Winsock控件可以讓本地計(jì)算機(jī)連接到遠(yuǎn)程的計(jì)算機(jī)上,同時(shí)使用UDP或TCP協(xié)議,兩個(gè)協(xié)議都能創(chuàng)建客戶機(jī)和服務(wù)器應(yīng)用。

  使用Winsock控件時(shí),通信的雙方需要選定相同的協(xié)議。TCP協(xié)議適用于傳送大容量、需要安全性保證的數(shù)據(jù)文件,而UDP協(xié)議適用于需要分別與很多下屬通信,或者建立的連接比較多且為時(shí)變的情況,特別是在數(shù)據(jù)量很小的時(shí)候。設(shè)定時(shí)可以使用Winsock1.Protocol =sckTCPProtocol方法,首先要找到你的計(jì)算機(jī)的名稱,并把它添入Winsock的LocalHost屬性中。

  創(chuàng)建一個(gè)應(yīng)用程序時(shí),首先要確定你建立的是客戶方應(yīng)用還是服務(wù)器服務(wù),只有建立的服務(wù)器應(yīng)用開始工作,并進(jìn)入監(jiān)聽狀態(tài)時(shí),客戶應(yīng)用程序才開始建立連接,進(jìn)入正常的通信狀態(tài)。筆者建立了一個(gè)應(yīng)用程序,它的功能是當(dāng)客戶方的鼠標(biāo)移動(dòng)時(shí),服務(wù)器應(yīng)用程序上能夠?qū)崟r(shí)顯示該鼠標(biāo)的位置。

  下面是建立服務(wù)器應(yīng)用的方法:

  1.創(chuàng)建一個(gè)新的標(biāo)準(zhǔn)EXE文件;

  2.加入一個(gè)Winsock控件;

  3.加入如下代碼:

  Private Sub Form Load()

   tcpServer.LocalPort = 1001

   tcpServer.Localhost = "servser"

   tcpServer.remotePort = 1002

   tcpServer.Localhost = "klint"

   tcpServer.Listen

  End Sub

  ′連接檢查

  Private Sub tcpServer ConnectionRequest(ByVal requestID As Long)

   If tcpServer.State <> sckClosed Then

  tcpServer.Close

  tcpServer.Accept requestID

  End Sub

  ′發(fā)送數(shù)據(jù)

  Private Sub frmserver monsemove(x,y)

   tcpServer.SendData "x"&str(x)

   tcpServer.SendData "y"&str(y)

  End Sub

  建立客戶應(yīng)用的方法為:

  1.創(chuàng)建一個(gè)新的標(biāo)準(zhǔn)EXE文件;

  2.加入一個(gè)Winsock控件;

  3.加入兩個(gè)Text框??txtx和txty;

  4.加入如下代碼:

  Private Sub Form Load()

  tcpServer.LocalPort = 1002

  tcpServer.Localhost = "klint"

  tcpServer.remotePort = 1001

  tcpServer.Localhost = "servser"

  tcpServer.Listen

  End Sub

  ′連接檢查

  Private Sub tcpklint ConnectionRequest

  (ByVal requestID As Long)

  If tcpklint.State <> sckClosed Then

  tcpklint.Close

  tcpklint.Accept requestID

  End Sub

  接收數(shù)據(jù)

  Private Sub tcpClient DataArrival

  (ByVal bytesTotal As Long)

  Dim strData As String

  tcpklint.GetData strData

  if left(strData,1)="X"then

  txt x.Text = strData

  else

  txt y.Text = strData

  endif

  End Sub

  以上例程實(shí)現(xiàn)的是一個(gè)非常簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)通信,在此基礎(chǔ)上略加改造,可以形成功能復(fù)雜的實(shí)時(shí)計(jì)算機(jī)網(wǎng)絡(luò)A-A交互通信系統(tǒng),用于控制、圖形仿真等。VB中Winsock給我們提供了一種簡(jiǎn)便的數(shù)據(jù)傳送方法,使我們得以輕松地實(shí)現(xiàn)網(wǎng)絡(luò)點(diǎn)對(duì)點(diǎn)通信。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多