addrinfo sockaddr結構解析

2021-08-11 11:18:16 字數 1790 閱讀 3873

addrinfo結構內容如下:

struct addrinfo ;
1.1ai_family

ai_family指定了位址族,可取值如下:值取值

含義af_inet

2ipv4

af_inet6

23ipv6

af_unspec

0協議無關

void print_family(struct addrinfo *aip)

}

1.2ai_socketype值取值

含義sock_stream

1資料流協議

sock_dgram

2資料報協議

void print_type(struct addrinfo *aip)

}

1.3ai_protocol值取值

含義ipproto_ip

0ip協議

ipproto_ipv4

4ipv4

ipproto_ipv6

41ipv6

ipproto_udp

17udp

ipproto_tcp

6tcp

void print_protocol(struct addrinfo *aip)

}

1.4ai_flags值取值

含義ai_passive

1被動的,用於bind,通常用於server socket

ai_canonname

2用於返回主機的規範名稱

ai_numerichost

4位址為數字串

void print_flags(struct addrinfo *aip)

else

}

1.5sockaddr

套接字體制二級制表示。詳見第2節。

sockaddr:

struct sockaddr ;
此資料結構用做bind、connect、recvfrom、sendto等函式的引數,指明位址資訊。但一般程式設計中並不直接針對此資料結構操作,而是使用另乙個與sockaddr等價的資料結構:sockaddr_in:

// sockaddr_in(在netinet/in.h中定義):

struct sockaddr_in ;

struct in_addr ;

sockaddr_insockaddr是並列的結構,指向sockaddr_in的結構體的指標也可以指向

sockadd的結構體,並代替它。也就是說,你可以使用sockaddr_in建立你所需要的資訊,

在最後用進行型別轉換就可以了bzero((char*)&mysock,sizeof(mysock));

//初始化:

mysock; // 結構體名

mysock.sa_family=af_inet;

mysock.sin_addr.s_addr=inet_addr("192.168.0.1");

Ax b的可解性 解的結構(Lec8)

1.先求非齊次解的乙個特解x p particular solution,有別於lec7中的特解,實際上lec7中的special solution是指a的基礎解系 2.再求矩陣a的零空間n a 求方程的 齊次通解 求ax 0的解 x n 3.ax b的通解為 x x p x n 然而,ax b的解...

配對堆 資料結構說解

乙個配對堆是一棵滿足堆序性質的樹,樹上每個節點儲存其關鍵字 子節點指標 兄弟節點指標和前驅指標。當該節點為其父節點的第乙個兒子,即父節點的子節點指標指向該節點時,該節點的前驅指標指向其父節點 否則該節點的前驅指標指向該節點的前乙個兄弟,即該節點的前驅指標指向的節點的兄弟節點指標指向該節點。配對堆可以...

LARGE INTEGER 大整數結構體的解析

在 winnt.h 檔案中定義了乙個結構體large integer,十分巧妙 if defined midl pass typedef struct large integer dummystructname struct u endif midl pass longlong quadpart l...