DEV C++中Socket網路程式設計
Dev-C++是一個小巧開源的C/C++整合開發環境,對於大部分的Linux函式,都可以在引用標頭檔案後直接呼叫,但開發socket網路程式卻要多做一些工作。
新增 標頭檔案不可以。
新增 #pragma comment(lib,"ws2_32.lib") 仍然報錯
- 在程式中引用標頭檔案
#include <<strong>winsock2.h>
2. 在使用socket介面前需要呼叫WSAStarup函式進行Windows下網路介面的啟動,程式碼示例如下:
WSADATA wsd;
if((status=WSAStartup(MAKEWORD(2,2),&wsd))!=0)
{
perror( "wsastartup() failed: ");
exit(1);
}
3. 在程式退出前需要呼叫WSACleanup進行資源的清理,程式碼示例如下:
WSACleanup();
4. 編譯時必須連結winsock的庫ws2_32,連結庫的選項在:“工具->編譯選項下”,如圖所示:
5. 最後編譯連結後,程式即可正確執行。
說明:
WSAStarup,即WSA(Windows SocKNDs Asynchronous,Windows套接字非同步)的啟動命令。是Windows下的網路程式設計介面軟體 Winsock1 或 Winsock2 裡面的一個命令(Ps:Winsock 是由Unix下的BSD Socket發展而來,是一個與網路協議無關的程式設計介面)。
為了在應用程式當中呼叫任何一個Winsock API函式,首先第一件事情就是必須通過WSAStartup函式完成對Winsock服務的初始化,因此需要呼叫WSAStartup函式。使用Socket的程式在使用Socket之前必須呼叫WSAStartup函式。該函式的第一個引數指明程式請求使用的Socket版本,其中高位位元組指明副版本、低位位元組指明主版本;作業系統利用第二個引數返回請求的Socket的版本資訊。
當一個應用程式呼叫WSAStartup函式時,作業系統根據請求的Socket版本來搜尋相應的Socket庫,然後繫結找到的Socket庫到該應用程式中。以後應用程式就可以呼叫所請求的Socket庫中的其它Socket函數了。