Windows網路程式設計基礎知識

2021-07-01 19:41:45 字數 1519 閱讀 9155

1.winsock的初始化

#include

#include

#include

#pragma comment(lib, "ws2_32.lib")//使用winsock2.h時,須載入此項

using

namespace

std;

//winsock2函式帶有wsa字首,除了wsastartup wsacleanup wsarecvex wsagetlasterror

int main()

cout

<< "主版本號:"

<< (int)lobyte(wsdata.whighversion) << endl;//所能支援的最高版本資訊

cout

<< "次版本號"

<< (int)hibyte(wsdata.whighversion) << endl;

wsacleanup();

system("pause");

return -1;

}

2.錯誤檢查和處理

wsagetlasterror

wsasetlasterror手動設定錯誤**

3.

typedef

struct sockaddr_in sockaddr_in, *psockaddr_in;

sin_family必須是af_inet,作用是告知winsock使用的是ip位址族

sin_zero[8]只充當填充項,使sockaddr_in和sockaddr結構長度一樣.sockaddr是乙個通用的套接字位址,作用相當於void*。

位元組排序

不同計算機處理器可能採用big-endian或little-endian形式進行編碼。internet聯網標準指定多位元組值必須用big-endian形式表示,一般稱之為網路位元組順序。

下面4個常用api函式便將乙個數從主機位元組順序轉換為網路位元組順序:

wsahtonl//4位元組

htonl

wsahtons//2位元組

htons

反之

wsantohl

ntohl

wsantohs

ntohs

另乙個常用的函式將點分ip位址轉換為4位元組整數

srvaddr.sin_addr.s_un.s_addr = inet_addr(「127.0.0.1」);

sockaddr_in srvaddr;

srvaddr.sin_addr.s_un.s_addr = htonl(inaddr_any);

srvaddr.sin_family = af_inet;

srvaddr.sin_port = htons(defaultport);

inaddr_any代表所有傳送到伺服器的這個埠,不管是哪個網絡卡 / 哪個ip位址接收到的資料,都交給這個套接字處理。

網路程式設計基礎知識 一

1 iso osi參考模型 iso osi international standard orgnization open system interconnection 模型,簡稱osi模型,該模型定義了網路互聯的七層框架,即iso開發系統互聯模型。當資料通過osi模型的不同層是,傳遞的資料格式有不...

Java基礎知識 網路程式設計

day26授課目錄 b 網路程式設計 tcp 面向連線 三次握手 資料安全,速度略低。分為客戶端和服務端。通訊的兩端都有socket。網路通訊其實就是socket間的通訊。資料在兩個socket間通過io流傳輸。socket在應用程式中建立,通過一種繫結機制與驅動程式建立關係,告訴自己所對應的ip和...

linux網路程式設計基礎知識

int connect int sockfd,const struct sockaddr servaddr,socklen t addrlen 引數 sock是socket返回的套接字描述符,第二個和第三個引數是伺服器的套接字位址結構的指標和該結構的大小。作用 tcp客戶端通過connect函式建立...