国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Visual C++之WinSock編程介紹

2023-06-06 12:10:45
字體:
供稿:網(wǎng)友

Windows 下網(wǎng)絡(luò)編程的規(guī)范-Windows Sockets是Windows下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。從1991年的1.0版到1995年的2.0.8版,經(jīng)過不斷完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成為Windows網(wǎng)絡(luò)編程的事實上的標(biāo)準(zhǔn)。

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

Windows Sockets規(guī)范本意在于提供給應(yīng)用程序開發(fā)者一套簡單的API,并讓各家網(wǎng)絡(luò)軟件供應(yīng)商共同遵守。此外,在一個特定版本W(wǎng)indows的基礎(chǔ)上,Windows Sockets也定義了一個二進制接口(ABI),以此來保證應(yīng)用Windows Sockets API的應(yīng)用程序能夠在任何網(wǎng)絡(luò)軟件供應(yīng)商的符合Windows Sockets協(xié)議的實現(xiàn)上工作。因此這份規(guī)范定義了應(yīng)用程序開發(fā)者能夠使用,并且網(wǎng)絡(luò)軟件供應(yīng)商能夠?qū)崿F(xiàn)的一套庫函數(shù)調(diào)用和相關(guān)語義。

遵守這套Windows Sockets規(guī)范的網(wǎng)絡(luò)軟件,我們稱之為Windows Sockets兼容的,而Windows Sockets兼容實現(xiàn)的提供者,我們稱之為Windows Sockets提供者。一個網(wǎng)絡(luò)軟件供應(yīng)商必須百分之百地實現(xiàn)Windows Sockets規(guī)范才能做到現(xiàn)Windows Sockets兼容。任何能夠與Windows Sockets兼容實現(xiàn)協(xié)同工作的應(yīng)用程序就被認(rèn)為是具有Windows Sockets接口。我們稱這種應(yīng)用程序為Windows Sockets應(yīng)用程序。

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

Windows Sockets

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

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

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

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

無論具體的協(xié)議是對稱的或是非對稱的,當(dāng)服務(wù)被提供時必然存在"客戶進程"和"服務(wù)進程"。一個服務(wù)程序通常在一個眾所周知的地址監(jiān)聽對服務(wù)的請求,也就是說,服務(wù)進程一直處于休眠狀態(tài),直到一個客戶對這個服務(wù)的地址提出了連接請求。在這個時刻,服務(wù)程序被"驚醒"并且為客戶提供服務(wù)-對客戶的請求作出適當(dāng)?shù)姆磻?yīng)。這一請求/相應(yīng)的過程可以簡單的用圖表示。雖然基于連接的服務(wù)是設(shè)計客戶機/服務(wù)器應(yīng)用程序時的標(biāo)準(zhǔn),但有些服務(wù)也是可以通過數(shù)據(jù)報套接口提供的。

Windows Sockets

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

(1)一個應(yīng)用程序希望在本地網(wǎng)絡(luò)中找到一個資源,而應(yīng)用程序?qū)υ撡Y源的地址又沒有任何先驗的知識。

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

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

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

下一篇:返回列表

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰安市| 万盛区| 金山区| 白玉县| 咸丰县| 宿迁市| 克什克腾旗| 堆龙德庆县| 通州区| 潜江市| 黄大仙区| 大新县| 永吉县| 邹平县| 民乐县| 翼城县| 五台县| 密山市| 莆田市| 怀宁县| 永定县| 石嘴山市| 保康县| 娄底市| 四川省| 婺源县| 东丽区| 南宁市| 襄垣县| 梁平县| 舟曲县| 合肥市| 射洪县| 毕节市| 庆阳市| 新宁县| 宝山区| 奇台县| 荔浦县| 安岳县| 高清|