• <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 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 25次 | 進入軟件測試論壇討論

    領測軟件測試網 米樂

      Microsoft的Windows Sockets API是Windows下的網絡應用程序接口,為了適用于
    Windows下的消息機制和異步的I/O選擇操作,Windows Sockets API在功能上擴充了將近
    20個函數,其中擴充的部分均冠以前綴WSA(Windows Sockets Asynchronous),如
    WSAStartup、WSAClean等,充分體現了Widnows的優越性。此外,Windows Sockets API有
    16位版和32位版兩種,16位版是單進程的,32位版則提供了多線程下的安全保護。

      Microsoft Visual Basic提供了用于Windows Sockets編程的可用控件——Winsock控
    件。該控件為用戶提供了訪問TCP和UDP網絡的極其方便的途徑。并且適用于Microsoft
    Access、Visual Basic、Visual C++和Visual FoxPro等多種可視化環境。通過Winsock
    控件編制C/S程序,程序員無須了解TCP或低級Winsock APIs調用實現的細節,如用戶無
    須考慮網絡字節順序與本機字接順序便可直接進行數據的傳送。用該控件實現網間進程通信
    極其方便。

      在TCP應用中,為了建立一個網絡連接實例(Instance)的服務器端,只需設置本地服
    務端口號,然后服務器調用方法Listen進入阻塞狀態,等待來自客戶的連接請求。與此對
    應的客戶端不但要將Winsock的屬性RemoteHost置為服務器的名稱(IP地址或網絡代號),
    還應設置服務器所監聽的相應服務的端口號(RemotePort),如FTP服務在21號端口,HTTP
    在81號端口等。然后調用方法Winsock.Connect向服務器發出請求。服務器接收到客戶請
    求時,事件ConnectionRequest將被觸發。如服務器愿意提供服務,則可調用Accept方法
    接受連接。

      一旦連接建立,兩端均可使用SendData或GetData進行數據的發送或接收。事件
    DataArrival將在另一端數據準備就緒時被觸發。

      UDP協議的實現與TCP不同的是,調用Sockets的兩端無需建立連接便可進行數據的傳
    輸。因此,一個UDP應用可以同時擔任服務器或客戶的角色。

      以下程序代碼為Visual Basic Windows Sockets編程的基本框架。

       注釋:服務器方

       Private Sub Command1.Click()

       注釋:設置本地服務端口號

       Winsock1.localport=2048

      

    注釋:服務器進入監聽狀態

       Winsock1.listen

       End Sub



      Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

      注釋:收到客戶連接請求

      注釋:檢查Socket狀態

      If Winsock1.State <> sckClosed Then Winsock1.Close

      注釋:接受客戶請求

      Winsock1.Accept requestID

      End Sub

      

       Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

       注釋:對方數據已準備好

       注釋:可用GetData()/SendData()接收/發送數據

       注釋:處理客戶數據

       ……

       End Sub

      

       Private Sub Form_Unload(Cancel As Integer)

       Winsock1.Close

       End Sub

      

       注釋:客戶方

       Private Sub Command1.Click()

       注釋:設置服務器網絡名

       Winsock1.RemoteHost=“193.168.1.40”

      

    注釋:設置服務器相應服務端口號

    Winsock1.RemotePort=2048

      

      注釋:向服務器發出連接請求

      Winsock1.Connect

      End Sub

      

      Private Sub Winsock1_Connect()

      注釋:服務器響應連接

      注釋:可以進行GetData()/SendData()進行數據傳輸

      ……

      End Sub

      

      Private Sub Form1.Unload()

       Winsock1.Close

      End Sub

      

      該段程序演示了用Visual Basic建立TCP連接的基本過程。因本文重在講解Sockets
    編程,故文中未涉及VB自己封裝的故障處理函數Winsock1.Erroe(),讀者可自行編制。以
    上程序段可作為一般TCP應用的基本框架加以擴展使用。

      Microsoft Visual C++實現過程與前述的VB實現類同。具體實例可見Microsoft
    Visual C++ Samples中的chatsrv與chater程序。

      隨著Inte.net的逐步興起,Sockets編程必將成為流行的網絡編程接口之一。也許您
    會發問:ISO的OSI模型又是何等地位呢?筆者的觀點是:ISO的OSI模型必將成為網絡應
    用的統一界面,Sockets接口的廣泛應用則為OSI模型開拓了更廣泛的應用前景!

    文章來源于領測軟件測試網 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>