WinSock網路程式設計基礎(1)

2022-03-03 15:27:33 字數 1827 閱讀 1992

記錄學習windows網路程式設計過程中遇到的問題和相關筆記

socket起源於unix,socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。基於"開啟—讀/寫—關閉"模式,其中winsock就是變種之一

以下是乙個典型的c/s中使用套接字介面的概述:

winsock是windows平台下的網路程式設計介面,它是基於unix下的bsd socket發展而來,是乙個與網路協議無關的程式設計介面。

winsock目前有兩個版本:

winsock 1: windows ce平台支援; 標頭檔案:winsock.h ; lib庫:wsock32.lib

winsock 2: 部分平台不支援。通過字首wsa可以區別於winsock 1版本。個別函式如wsastartup、wsacleanup、wsarecvex、wsagetlasterror都屬於winsock 1.1規範的函式; 標頭檔案:winsock2.h; lib庫:ws2_32.lib

初始化winsock:所有需要呼叫winsock函式的程式都必須初始化winsock,同時確保winsock支援該系統

#define win32_lean_and_mean

#endif

#include #include #include #include #include #pragma comment(lib, "ws2_32.lib")

int main()

wsacleanup();

return 0;

}wsastartup()函式使用合適的的winsock動態鏈結庫,成功就返回0

_in_ word wversionrequested,

_out_ lpwsadata lpwsadata

);wversionrequested指定了你想載入的winsock版本,其高位元組指定了次版本號,而低位元組指定了主版本號。可以使用巨集makeword(x, y)來指定版本號,這裡x代表主版本,而y代表次版本。lpwsadata是乙個指向wsadata結構的指標,wsastartup會向該結構中填充其載入的winsock動態鏈結庫

wsadata結構:

word wversion;

word whighversion;

char szdescription[wsadescription_len+1];

char szsystemstatus[wsasys_status_len+1];

unsigned short imaxsockets;

unsigned short imaxudpdg;

char far *lpvendorinfo;

} wsadata, *lpwsadata;

wversion為你將使用的winsock版本號,whighversion為載入的winsock動態庫支援的最高版本,它們的高位元組代表次版本,低位元組代表主版本。

szdescription與szsystemstatus由特定版本的winsock設定

imaxsockets表示最大數量的併發sockets,其值依賴於可使用的硬體資源。

imaxudpdg表示資料報的最大長度;然而,獲取資料報的最大長度,需要使用wsaenumprotocols對協議進行查詢。

lpvendorinfo是為winsock實現而保留的製造商資訊,這個在windows平台上並沒有什麼用處.

windows 95以後的作業系統都支援winsock 2.2的版本.

wsacleanup() :對占用的資源進行釋放,如果呼叫該函式失敗,作業系統為自動將其釋放,對應於每乙個wsastartup呼叫都應該有乙個wsacleanup呼叫.

Winsock程式設計基礎1

1 載入和釋放winsoke庫 所有winsock函式都是從ws2 32.dll匯出,包含相應庫檔案 include pragma comment lib,ws2 32 若沒有載入,呼叫scok函式返回的socket error出錯 為wsanotinitialised intwsastartup ...

Winsock程式設計入門 1

一 簡單的tcp伺服器 介紹 winsock api是一套供microsoft windows作業系統使用的套接字程式庫,它最初基於berkeley套接字,但是其中加入了一些microsoft的特殊改動。在這篇文章中,我要試著給你介紹如何使用winsock來進行套接字程式設計,並假設你沒有在任何作業...

Winsock程式設計筆記 1

tcp ip統一規定使用大尾方式傳輸資料,即網路位元組序 intel amd的計算機一般都是小尾方式儲存資料 所以當計算機想通過網路傳輸一串資料給另一台計算機時,都會經歷如下過程的轉換 1.inet addr是把由小數點分割的ip位址字串轉成由32位二進位制表示的網路位元組序ip位址 ip字串 32...