麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C++ > 正文

Visual C++之WinSock編程介紹

2023-06-06 12:10:45
字體:
來源:轉載
供稿:網友

Windows 下網絡編程的規范-Windows Sockets是Windows下得到廣泛應用的、開放的、支持多種協議的網絡編程接口。從1991年的1.0版到1995年的2.0.8版,經過不斷完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成為Windows網絡編程的事實上的標準。

Windows Sockets規范以U.C. Berkeley大學BSD UNIX中流行的Socket接口為范例定義了一套Micosoft Windows下網絡編程接口。它不僅包含了人們所熟悉的Berkeley Socket風ge的庫函數;也包含了一組針對Windows的擴展庫函數,以使程序員能充分地利用Windows消息驅動機制進行編程。

Windows Sockets規范本意在于提供給應用程序開發者一套簡單的API,并讓各家網絡軟件供應商共同遵守。此外,在一個特定版本Windows的基礎上,Windows Sockets也定義了一個二進制接口(ABI),以此來保證應用Windows Sockets API的應用程序能夠在任何網絡軟件供應商的符合Windows Sockets協議的實現上工作。因此這份規范定義了應用程序開發者能夠使用,并且網絡軟件供應商能夠實現的一套庫函數調用和相關語義。

遵守這套Windows Sockets規范的網絡軟件,我們稱之為Windows Sockets兼容的,而Windows Sockets兼容實現的提供者,我們稱之為Windows Sockets提供者。一個網絡軟件供應商必須百分之百地實現Windows Sockets規范才能做到現Windows Sockets兼容。任何能夠與Windows Sockets兼容實現協同工作的應用程序就被認為是具有Windows Sockets接口。我們稱這種應用程序為Windows Sockets應用程序。

Windows Sockets規范定義并記錄了如何使用API與Internet協議族(IPS,通常我們指的是TCP/IP)連接,尤其要指出的是所有的Windows Sockets實現都支持流套接口和數據報套接口。應用程序調用Windows Sockets的API實現相互之間的通訊。Windows Sockets又利用下層的網絡通訊協議功能和操作系統調用實現實際的通訊工作。它們之間的關系如圖

Windows Sockets

通信的基礎是套接口(Socket),一個套接口是通訊的一端。在這一端上你可以找到與其對應的一個名字。一個正在被使用的套接口都有它的類型和與其相關的進程。套接口存在于通訊域中。通訊域是為了處理一般的線程通過套接口通訊而引進的一種抽象概念。套接口通常和同一個域中的套接口交換數據(數據交換也可能穿越域的界限,但這時一定要執行某種解釋程序)。

Windows Sockets規范支持單一的通訊域,即Internet域。各種進程使用這個域互相之間用Internet協議族來進行通訊(Windows Sockets 1.1以上的版本支持其他的域,例如Windows Sockets 2)。套接口可以根據通訊性質分類;這種性質對于用戶是可見的。應用程序一般僅在同一類的套接口間通訊。不過只要底層的通訊協議允許,不同類型的套接口間也照樣可以通訊。用戶目前可以使用兩種套接口,即流套接口和數據報套接口。流套接口提供了雙向的,有序的,無重復并且無記錄邊界的數據流服務。數據報套接口支持雙向的數據流,但并不保證是可靠,有序,無重復的。

也就是說,一個從數據報套接口接收信息的進程有可能發現信息重復了,或者和發出時的順序不同。數據報套接口的一個重要特點是它保留了記錄邊界。對于這一特點,數據報套接口采用了與現在許多包交換網絡(例如以太網)非常類似的模型。

一個在建立分布式應用時最常用的范例便是客戶機/服務器模型。在這種方案中客戶應用程序向服務器程序請求服務。這種方式隱含了在建立客戶機/服務器間通訊時的非對稱性。客戶機/服務器模型工作時要求有一套為客戶機和服務器所共識的慣例來保證服務能夠被提供(或被接受)。這一套慣例包含了一套協議。它必須在通訊的兩頭都被實現。根據不同的實際情況,協議可能是對稱的或是非對稱的。在對稱的協議中,每一方都有可能扮演主從角色;在非對稱協議中,一方被不可改變地認為是主機,而另一方則是從機。一個對稱協議的例子是Internet中用于終端仿真的TELNET。而非對稱協議的例子是Internet中的FTP。

無論具體的協議是對稱的或是非對稱的,當服務被提供時必然存在"客戶進程"和"服務進程"。一個服務程序通常在一個眾所周知的地址監聽對服務的請求,也就是說,服務進程一直處于休眠狀態,直到一個客戶對這個服務的地址提出了連接請求。在這個時刻,服務程序被"驚醒"并且為客戶提供服務-對客戶的請求作出適當的反應。這一請求/相應的過程可以簡單的用圖表示。雖然基于連接的服務是設計客戶機/服務器應用程序時的標準,但有些服務也是可以通過數據報套接口提供的。

Windows Sockets

數據報套接口可以用來向許多系統支持的網絡發送廣播數據包。要實現這種功能,網絡本身必須支持廣播功能,因為系統軟件并不提供對廣播功能的任何模擬。廣播信息將會給網絡造成極重的負擔,因為它們要求網絡上的每臺主機都為它們服務,所以發送廣播數據包的能力被限制于那些用顯式標記了允許廣播的套接口中。廣播通常是為了如下兩個原因而使用的:

(1)一個應用程序希望在本地網絡中找到一個資源,而應用程序對該資源的地址又沒有任何先驗的知識。

(2)一些重要的功能,例如路由要求把它們的信息發送給所有可以找到的鄰機。被廣播信息的目的地址取決于這一信息將在何種網絡上廣播。Internet域中支持一個速記地址用于廣播-INADDR_BROADCAST。由于使用廣播以前必須捆綁一個數據報套接口,所以所有收到的廣播消息都帶有發送者的地址和端口。

Intel處理器的字節順序是和DEC VAX處理器的字節順序一致的。因此它與68000型處理器以及Internet的順序是不同的,所以用戶在使用時要特別小心以保證正確的順序。任何從 Windows Sockets函數對IP地址和端口號的引用和傳送給Windows Sockets函數的IP地址和端口號均是按照網絡順序組織的,這也包括了sockaddr_in結構這一數據類型中的IP地址域和端口域(但不包括 sin_family域)。

上一篇:C++多線程的例子

下一篇:返回列表

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级黄色影院 | 极品大长腿啪啪高潮露脸 | 久草最新在线 | 国产精品自在线拍 | 欧美18—19sex性hd按摩 | 日日鲁夜夜视频热线播放 | 午夜视频你懂的 | 国产一区二区三区精品在线观看 | 激情视频在线播放 | 久久精品观看 | hd极品free性xxx一护士 | 日韩不卡一区二区 | 毛片福利| 91精选视频 | 插插操| 一级国产航空美女毛片内谢 | 精品一区二区三区日本 | 久久亚洲美女视频 | 在线2区 | 偿还电影免费看 | 深夜影院a | 国产亚洲高清视频 | 在线中文字幕观看 | 99欧美视频 | 久久精品a一级国产免视看成人 | 亚洲视频在线视频 | 亚洲一区二区三区精品在线观看 | 中文字幕在线日韩 | 国产精品久久亚洲 | 亚洲一区二区三区视频免费 | 成人三级电影网 | 国产高清美女一级毛片久久 | 国产一区二区三区影视 | 亚洲一区二区三区高清 | 日本成年免费网站 | 一区二区三区欧洲 | 欧美日韩国产成人在线 | 精品国产96亚洲一区二区三区 | 在线看日本 | 精品国产久 | 国产乱淫av一区二区三区 |