Winsock是網絡編程接口,而不是協議。編程
創建Winsock規範的主要目的是提供一個與協議無關的傳送接口。api
Winsock將網絡編程接口與具體協議解耦緩存
對每一個離散寫命令來講,若是傳送協議把它們(並且只有它們)當作一條獨立的消息在網上傳送,咱們就說該協議是面向消息。網絡
面向消息:傳送協議以獨立的消息單元在網絡上傳輸數據函數
第一次讀取調用不會將這全部的三個數據包都返回,即便這些數據包已經收到也如此。這稱爲「保護消息邊界」(preserving message boundaries)接口
多個消息間存在保護消息邊界,每次讀取不能返回多個消息。進程
無保護消息邊界的協議一般稱做「基於流的協議」資源
對發送端來講,意味着容許系統將原始消息分解成小消息或把
幾條消息積累在一塊兒,造成一個較大的數據包。對接收端來講,則是數據一到達網絡堆棧,網絡堆棧就開始讀取它,並將它緩存下來等候進程處理。在進程請求處理大量數據時,系統會在不溢出爲客戶請求提供的緩衝區這一前提下,儘可能返回更多的數據路由
基於流的協議不按照消息區分接收到的數據同步
面向鏈接的服務中,進行數據交換以前,必須與通訊方創建一條路徑
這樣既肯定了通訊方之間存在路由,又保證了通訊雙方都是活動的、均可彼此響應,但其特色是在通訊雙方之間創建一個通訊信道需
要不少開支而無鏈接協議卻不保證接收端是否正在收聽
面向鏈接一方面要保證鏈路存在,二要肯定對方是活動的,可彼此響應,至關於創建了一個通訊約定
廣播數據即數據從一個工做站發出,局域網內的其餘全部工做站都能收到它。
這一特徵適用於無鏈接協議,由於LAN上的全部機器均可得到並處理廣播消息。
使用廣播消息的不利之處是每臺機器都必須對該消息進行處理。好比,一用戶在LAN上廣播一條消息,每臺機器上的網卡都會收到這條消息,並把它上傳到網絡堆棧。而後,堆棧將這條消息在全部的網絡應用中循環,看它們是否應該接收這條消息。
I P協議下,多播是廣播的一種變形。
I P多播要求對收發數據感興趣的全部主機加入一個特定的組。進程但願加入多播組時,網卡上會增添一個過濾器,這樣,只有綁定組地址的數據纔會被網絡硬件撿起,並上傳到網絡堆棧進行恰當處理。
Wi n 3 2平臺提供的最有用的特徵之一是可以同步支持多種不一樣的網絡協議。
如何獲取系統中安裝的網絡協議信息?
WSAEnumProtocols
要想得到系統中安裝的網絡協議的相關信息,調用這個函數W S A E n u m P r o t o c o l s便可
如何加載Winsock庫?
在能夠調用一個Wi n s o c k函數以前,必須先加載一個版本正確的Wi n s o c k庫。Winsock啓動例程是W S A S t a r t u p
在結束Wi n s o c k庫,並且再也不須要調用任何Wi n s o c k函數時,附帶例程會卸載這個庫, 並釋放資源。這個函數的定義是: int WSACleanup (void); 記住,每次調用W S A S t a r t u p,都須要調用相應的W S A C l e a n u p,由於每次啓動調用都 會增長對加載Winsock DLL的引用次數,它要求調用一樣屢次的W S A C l e a n u p,以此抵消 引用次數。