Winsock程式設計基礎1

2022-08-26 15:39:09 字數 1867 閱讀 2539

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)

簡單封裝

class

cinitsock

~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...