1、載入和釋放winsoke庫
//所有winsock函式都是從ws2_32.dll匯出,包含相應庫檔案#include
#pragma comment(lib, "ws2_32")
//若沒有載入,呼叫scok函式返回的socket_error出錯**為wsanotinitialised
intwsastartup(
word wversionrequested,
//指定要載入的winsock庫版本,高位元組次版本, 低位元組主版本號,使用makeword(x, y)
lpwsadata lwsadata //
乙個指向wsadata結構的指標,用來返回dll庫的詳細資訊
);typedef
struct
wsadata wsadata, far *lpwsadata;
//成功返回0,否則要呼叫wsagetlasterror函式檢視原因
int wsacleanup(void)
簡單封裝
classcinitsock
~cinitsock()
}
winsock定址和位元組順序
//版本1使用sockaddr相容
struct
sockaddr ;
//我們一般使用tcp/ip,所以上面的tcp/ip版本為
struct
sockaddr_in ;
//ip位址 in_addr結構
struct
in_addr s_un_b; //
4個u_char描述
struct s_un_w; //
2個u_short描述
u_long s_addr; //
1個u_long描述
} s_un;
//ip位址函式
unsigned long inet_addr(const
char *cp) //
將點分十進位制ip位址字串轉換為32位二進位制表示ip位址,二進位制數按網路順序儲存
char* inet_ntoa(struct in_addr) //
將32位二進位制數轉換為字元
//網路位元組順序為大端順序(高位元組低位), intel為小端順序(高位元組高位)
u_short htons(u_short hostshort) //
主機順序轉網路位元組順序
u_long htonl(u_long hostlong) //
u_short ntohs(u_short hostshort) //
網路位元組順序轉主機順序
u_long ntohl(u_long hostlong)
初始化sockaddr_in
sockaddr_in sockaddr;sockaddr.sin_family =af_inet;
sockaddr.sin_port = htons(6789
);sockaddr.sin_addr.s_un.s_addr = inet_addr("
127.0.0.1");
//或使用下列初始化ip位址
sockaddr.sin_addr.s_un.s_un_b.s_b1 = 127
; sockaddr.sin_addr.s_un.s_un_b.s_b2 = 0
; sockaddr.sin_addr.s_un.s_un_b.s_b3 = 0
; sockaddr.sin_addr.s_un.s_un_b.s_b4 = 1;
WinSock網路程式設計基礎(1)
記錄學習windows網路程式設計過程中遇到的問題和相關筆記 socket起源於unix,socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。基於 開啟 讀 寫 關閉 模式,其中winsock就是變種之一 以下是乙個典型的c s中使用套接字介面的概述 winsock是wind...
Winsock程式設計入門 1
一 簡單的tcp伺服器 介紹 winsock api是一套供microsoft windows作業系統使用的套接字程式庫,它最初基於berkeley套接字,但是其中加入了一些microsoft的特殊改動。在這篇文章中,我要試著給你介紹如何使用winsock來進行套接字程式設計,並假設你沒有在任何作業...
Winsock程式設計筆記 1
tcp ip統一規定使用大尾方式傳輸資料,即網路位元組序 intel amd的計算機一般都是小尾方式儲存資料 所以當計算機想通過網路傳輸一串資料給另一台計算機時,都會經歷如下過程的轉換 1.inet addr是把由小數點分割的ip位址字串轉成由32位二進位制表示的網路位元組序ip位址 ip字串 32...