通訊網路/伯克利套接字 API
這裡會提到,而且可能還會在本章節的每個子章節中提到,這些章節的意圖,更不用說整本書的意圖,就是不是為了教授網路程式設計。這些章節的目的是提供一個快速而簡陋的可用函式列表,並展示它們是如何與我們之前關於網路的討論相吻合的。如需瞭解更多資訊,建議讀者檢視程式設計書架上的網路概念。
本頁面並非旨在深入討論 C 套接字程式設計。相反,本頁面希望成為 C 的快速而簡陋的概述,以鞏固我們之前討論的一些網路概念。
本節將(簡要)討論如何在 UNIX 環境中使用 C 程式語言編寫套接字應用程式。下一節將討論 Windows 下套接字程式設計的不同之處,並將解釋如何將套接字程式碼從 UNIX 移植到 Windows 平臺。
在 Windows 中程式設計套接字幾乎與在 UNIX 中程式設計套接字相同,只是 Windows 需要一些不同的新增
- 使用 <Winsock.h>
- 連結到 ws2_32.dll
- 使用 WSAStartup( ) 初始化 Winsock
前兩點不言而喻,實際上取決於你的編譯器,這裡不再贅述。但是,第三點需要解釋一下。在我們使用任何套接字函式之前,我們需要初始化 Winsock(否則它們都會返回錯誤)。要初始化,我們必須建立一個新的資料物件,並將其傳遞給初始化例程
WSADATA wd;
我們必須將指向該結構體的指標,以及 Winsock 所需的版本號,傳遞給該函式
WSAStartup(MAKEWORD(2, 0), &wd);
MAKEWORD 宏接受兩個數字,一個主版本號(上面的 2),和一個次版本號(上面的 0)。例如,要使用 Winsock2.0,我們使用 MAKEWORD(2, 0)。要使用 Winsock1.1,我們使用 MAKEWORD(1, 1)。
此外,值得注意的是,Windows 不允許使用通用的 unix read( ) 和 write( ) 函式來讀取和寫入套接字。在 Windows 中,你應該使用 recv( ) 和 send( ) 函式。此外,熟悉 Windows 的人應該知道,Windows 將套接字視為 I/O 控制代碼,因此它們也可以使用 Windows 通用的讀寫函式 ReadFile( ) 和 WriteFile( ) 訪問。
Winsock,以及 Windows 一般來說,也擁有許多其他可在 winsock.dll 中,以及其他 dll(如 wininet.dll)中使用的函式,這些函式將促進更高層次的網際網路操作。
如需全面瞭解 C 中的 Berkeley 套接字 API,請參閱 UNIX 網路章節,該章節出自 C 程式設計。
- www.collegetojob.com - 有用網站教程,涵蓋 C、Unix 和套接字程式設計。