• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用Winsock編寫網絡通信程序

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 27次 | 進入軟件測試論壇討論

    領測軟件測試網   文/徐大華

      Winsock是Microsoft Windows提供的網絡編程接口,它提供了基于TCP/IP協議的接口實現方法。用戶不必了解TCP,通過設置Winsock控件的屬性并調用它的方法,就可以與一臺遠程計算機相連,從而實現數據傳輸。

      TCP/IP協議提供了兩種同其他計算機進行通信的方式:TCP和UDP方式。具體采用哪種方式,要視以下三種情況而定:


      1、如果應用程序在收發數據時需要得到客戶端或服務器端的確認或應答,則使用TCP方式;

      2、如果需要發送的數據量特別大則使用TCP方式;

      3、數據發送是間歇的,或是在一個會話內?如果發送通知一類的短信息,UDP方式是最適合的。

      關于Winsock控件

      Winsock控件在使用前需先在工具箱面板中單擊鼠標右鍵,從彈出的菜單中選擇“部件”菜單,從“部件”對話框中選擇Microsoft Winsock Controls 6.0,將它添加到工具箱中。在使用Winsock控件前必須先了解它的基本屬性和方法:

      1、Protocol:用于設置和返回Winsock控件所使用的協議;

      2、LocalPort:設置或返回本地通信程序端;

      3、RemotePort:設置或返回要連接的遠程計算機通信程序的端口號;

      4、RemoteHost:設置或返回遠程計算機名,并向它發送數據或從那里接收數據;

      5、State:返回控件的當前狀態。通過它的值決定控件的下一步處理狀態;

      6、Listen:用于服務器程序,等待客戶訪問。僅適用于TCP方式;

      7、Accept:用于接收連接請求,適用于TCP服務器應用程序,當有連接請求時用此方法接受請求以建立連接;

      8、SendData:用于將數據發送給遠程計算機?稍赥CP/UDP兩種方式下使用;

      9、GetData:用來取得接收到的數據,并將數據存儲在變體類型的變量中,然后清除接收緩沖區;

      10、Close:對客戶機和服務器應用程序關閉TCP連接。

      實例制作

      本例是通過Winsock控件的遠程通訊功能,采用TCP協議來設計一師生聊天程序。

      1、教師機即服務器

      在這里需要兩個Label控件和一個Winsock控件。

      對于Winsock的端口號(LocalPort),通常選擇大于100的整數,以避免同其他通信程序產生沖突。該程序通過Text1的Change事件,向客戶端的Text2發送數據。

      程序代碼如下:

      Private Sub Form_Load()

      Winsock1.LocalPort = 1001 '設置本地計算機通信程序端口

      Winsock1.Listen '等待客戶機訪問

      Form2.Show '顯示客戶機界面

      End Sub

      Private Sub Text1_Change()

      Winsock1.SendData Text1.Text '將數據傳輸給客戶機

      End Sub

      Private Sub Winsock1_ConnectionRequ-

      est(ByVal requestID As Long)

      If Winsock1.State<>sckClosed Then

      Winsock1.Close

      Winsock1.Accept requested '用于接收連接請求

      End If

      End Sub

      Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

      Dim aa As String

      Winsock1.GetData aa '接收客戶機傳輸過來的數據

      Text2.Text = aa '將客戶機傳輸過來的數據顯示在Text2中

      End Sub

      2、學生機即客戶機

      在這里需要的兩個Label控件、兩個Command控件以及一個Winsock控件。

      程序代碼如下:

      Private Sub Command1_Click()

      Form2.Winsock1.Connect '同遠程計算機建立連接

      End Sub

      Private Sub Command3_Click()

      End '結束程序運行

      End Sub

      Private Sub Form_Load()

      Winsock1.RemoteHost = "遠程計算機名"

      '獲取遠程計算機名

      Winsock1.RemotePort = 1001 '獲取遠程計算機通信程序的端口

      End Sub

      Private Sub Text1_Change()

      Winsock1.SendData Text1.Text '向服務器發送數據

      End Sub

      Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

      Dim aa As String

      Winsock1.GetData aa '接收服務器傳輸入過來的數據

      Text2.Text = aa '將接收的數據在Text2中顯示出來

      End Sub

      運行服務器程序,再運行客戶端程序,最后單擊客戶端窗全上的“連接”按鈕,這時就可實現兩個計算機間的通信了。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>