Windows Sockets:背景知識

本文介紹 Windows Sockets 的性質和用途。其他內容還包括:

定義術語“套接字”。

描述 SOCKET 句柄數據類型。

描述套接字的用途。

Windows Sockets 規範爲 Microsoft Windows 定義了一個二進制兼容網絡編程接口。Windows Sockets 基于 Berkeley Software Distribution(BSD,4.3 版)中的 UNIX 套接字實現,後者是美國加州大學伯克利分校開發的。該規範包括針對 Windows 的 BSD 樣式套接字例程和擴展。通過使用 Windows Sockets,應用程序能夠在任何符合 Windows Sockets API 的網絡上通信。在 Win32 上,Windows Sockets 提供線程安全。

許多網絡軟件供給商支持網絡協議下的 Windows Sockets,這些協議包括:傳輸控制協議/網際協議 (TCP/ip)、Xerox 網絡系統 (XNS)、Digital Equipment Corporation 的 DECNet 協議和 Novell Corporation 的互聯網包交換協議/順序分組報文交換協議 (IPX/SPX) 等。雖然目前的 Windows Sockets 規範定義了 TCP/IP 的套接字抽象化,但任何網絡協議都可以通過提供自己版本的、實現 Windows Sockets 的動態鏈接庫 (DLL) 來滿足 Windows Sockets。用 Windows Sockets 編寫的商用應用程序示例包括 X Windows 服務器、終端模擬器和電子郵件系統。

注重: Windows Sockets 的用途是將基礎網絡抽象出來,這樣,您不必對網絡非常了解,並且您的應用程序可在任何支持套接字的網絡上運行。因此,本文檔不討論網絡協議的細節內容。

Microsoft 基礎類庫 (MFC) 通過提供兩個類來支持使用 Windows Sockets API 進行編程。其中一個類爲 CSocket ,它提供高級抽象化來簡化網絡通信編程。

Windows Sockets 規範“Windows Sockets:用于 Microsoft Windows 環境下的網絡計算的開放接口”現在爲 1.1 版本,它是 TCP/IP 群體中一個由個人和公司組成的大團體開發的,是一個開放的網絡標准,可免費使用。套接字編程模型當前支持一個“通信域”,該“通信域”使用網際協議組 (Internet PRotocol Suite)。該規範可在 Platform SDK 中獲得。

提示: 因爲套接字使用網際協議組,所以它們對于支持“信息高速公路”上 Internet 通信的應用程序是首選方式。

套接字的定義

套接字是一個通信終結點,它是 Windows Sockets 應用程序用來在網絡上發送或接收數據包的對象。套接字具有類型,與正在運行的進程相關聯,並且可以有名稱。目前,套接字一般只與使用網際協議組的同一“通信域”中的其他套接字交換數據。

這兩種套接字都是雙向的,是可以同時在兩個方向上(全雙工)進行通信的數據流。

可用的套接字類型有以下兩種:

流式套接字

流式套接字提供沒有記錄邊界的數據流,即字節流。字節流能確保以正確的順序無重複地被送達。

數據文報套接字

數據文報套接字支持面向記錄的數據流,但不能確保能被送達,也無法確保按照發送順序或不重複。

“有序”指數據包按發送的順序送達。“不重複”指一個特定的數據包只能獲取一次。

注重: 在某些網絡協議下(如 XNS),流可以面向記錄,即作爲記錄流而非字節流。但在更常用的 TCP/IP 協議下,流爲字節流。Windows Sockets 提供與基礎協議無關的抽象化級別。

有關上述類型以及各種套接字適用情形的信息,請參見 Windows Sockets:流式套接字和 Windows Sockets:數據文報套接字。

SOCKET 數據類型

每一個 MFC 套接字對象封裝一個 Windows Sockets 對象的句柄。該句柄的數據類型爲 SOCKET。SOCKET 句柄類似于窗口的 HWND。MFC 套接字類提供對封裝句柄的操作。

Platform SDK 中具體描述了 SOCKET 數據類型。

套接字的用途

套接字的作用非常大,至少在下面三種通信上下文中如此:

客戶端/服務器模型。

對等網絡方案,如聊天應用程序。

通過讓接收應用程序將消息解釋爲函數調用來進行遠程過程調用 (RPC)。

提示: 最適合使用 MFC 套接字的情況是當同時編寫通信的兩端時:在兩端都使用 MFC。有關該主題(包括如何治理與非 MFC 應用程序通信的情況)的更多信息,請參見 Windows Sockets:字節排序 。

Windows Sockets:背景知識
更多內容請看Windows操作系統安全集 Windows操作系統安裝 Windows頻道專題,或

Windows Sockets:套接字通知
本文描述套接字類中的通知函數。這些成員函數都是回調函數,框架調用它們將重要事件通知給套接字對象。通知函數有: OnReceive:通過調用 Receive 通知此套接字緩沖區中有需要檢索的數據。 ...查看完整版>>Windows Sockets:套接字通知
 
Windows Sockets:帶存檔的套接字的工作方式
本文解釋如何組合 CSocket 對象、CSocketFile 對象和 CArchive 對象以簡化通過 Windows 套接字發送和接收數據。...查看完整版>>Windows Sockets:帶存檔的套接字的工作方式
 
Windows Sockets:轉換字符串
本文以及另外兩篇相關文章解釋 Windows Sockets 編程方面的一些問題。本文介紹轉換字符串。其他問題在 Windows Sockets:阻塞和 Windows Sockets:字節排序中介紹。...查看完整版>>Windows Sockets:轉換字符串
 
Windows Sockets 示例列表
下列 MFC 示例程序闡釋了 Windows Sockets 功能: CHATTER CHATTER 是一個 Windows 套接字客戶端示例應用程序。它是一個具有拆分窗口的單文檔界面 (SDI) 應用程序,答應用戶將消息發送到討論服務器 (CHATSRVR),討論...查看完整版>>Windows Sockets 示例列表
 
Windows Sockets:端口和套接字地址
本文介紹 Windows Sockets 中使用的術語“端口”和“地址”。端口端口標識唯一的進程,一個進程可以有一個服務。在當前的上下文中,端口與支持 Windows Sockets 的應用程序關聯。之所以關聯,是爲了唯一標識每個 Win...查看完整版>>Windows Sockets:端口和套接字地址
 
Windows Sockets 網絡編程(三) —— WINDOWS SOCKETS 1.1 程序設計
Windows Sockets 網絡編程(三) —— WINDOWS SOCKETS 1.1 程序設計 作者: 一、簡介 WINDOWS SOCKETS 是從 Berkeley Sockets 擴展而來的,其在繼承 Berkeley Sockets 的基礎上...查看完整版>>Windows Sockets 網絡編程(三) —— WINDOWS SOCKETS 1.1 程序設計
 
Windows Sockets API實現網絡異步通訊
[文章信息] 作者:信息産業部電子第二十二研究所青島分所郎銳[文章導讀] 本文對如何使用面向連接的流式套接字實現對網卡的編程以及如何實現異步網絡通訊等問題進行了討論與闡述 ...查看完整版>>Windows Sockets API實現網絡異步通訊
 
[收藏]Windows Sockets 2.0:使用完成端口高性能,可擴展性Winsock服務程序
Windows Sockets 2.0:使用完成端口高性能,可擴展性Winsock服務程序 翻譯說明: 完成端口基本上公認爲一種在windows服務平台上比較成熟和高效的IO方法,理解和編寫程序都不是很困難。目前我正在進行這方面的實踐,...查看完整版>>[收藏]Windows Sockets 2.0:使用完成端口高性能,可擴展性Winsock服務程序
 
Windows Sockets 網絡編程(三)
來源:Windows Sockets 網絡編程(三) —— WINDOWS SOCKETS 1.1 程序設計作者: 一、簡介WINDOWS SOCKETS 是從 Berkeley Sockets 擴展而來的,其在繼承 Berkeley Sockets 的基礎上,又進行了新的擴充。這些...查看完整版>>Windows Sockets 網絡編程(三)
 
 
回到王朝網路移動版首頁