UNIX網路程式設計卷一 第三章 位址定義及相關函式

2021-07-27 13:15:42 字數 1154 閱讀 6734

本章主要說明:

1. 5中不同的套接字位址,以及其結構體定義,和使用說明。

2. 網路位址的結構體(數字)和字串相互轉換函式。

3. 位元組序測試,調整函式。

4. 記憶體按位元組操作函式。

一、 套接字位址結構

這些結構體位址很多,感覺很難記,可能要以後多實踐吧。。

所有網路位址都是以sockaddr_ 開頭的結構體組成,包括ipv4的 struct sockaddr_in{}, ipv6 的 struct sockaddr_in6;,unix域 struct sockaddr_un, 

資料鏈路 struct sockaddr_dl , 通用套接字位址有兩個, struct sockaddr(舊) ,以及struct sockaddr_storage(新)

1.  ipv4套接字位址結構體

struct in_addr;

這個套接字用於本地程序間通訊,也就沒有ip位址這些了,所以結構也不一樣

4. 資料鏈路 struct sockaddr_dl

這個不知道。。。

略5. 通用套接字位址

舊:struct sockaddr un;

un.s = 0x0102;

printf("%s: ", cpu_vendor_os);

if (sizeof(short) == 2) else

printf("sizeof(short) = %d\n", sizeof(short));

exit(0);

}2. 調整位元組序函式

uint16_thtons(uint16_t host16bitvalue);

uint32_thtonl(uint32_t host32bitvalue);

uint16_t ntohs(uint16_t host16bitvalue);

uint32_tntohs(uint32_t host32bitvalue);

h 表示 host

n 表示network

s 表示short   看作16位

l 表示long看作32位

4. 記憶體操作函式

一般使用ansi  c函式即 mem開頭的那幾個函式,如memset, memcpy,memcpy

還有一種b開頭的函式, bzero    bcopy, bcmp

unix 網路程式設計 第三章

包裹函式 就是對有錯誤返回值的函式的封裝。在unix網路程式設計中用大寫表示。err sys 必須要errno 的值才能輸出錯誤?執行緒函式遇到錯誤的時候 不設定errno的值,而是把error的值作為函式的返回值。必須檢查某個確定的錯誤,並處理它,而不是終止程序執行。unix errno 值 每當...

《UNIX 網路程式設計》 第三章課後習題第三題

按自己的想法實現的,肯定有更好的實現方式,放在這裡留個紀念。從下面開始 include include include include include include 具體的轉換過程,不做詳細注釋,有更好的實現方式 intinet pton loose int family,const char s...

《UNIX 網路程式設計》 第三章課後習題第三題

試寫乙個名為inet pton loose的函式,它能處理如下情形 如果位址族為af inet且inet pton返回0,那就呼叫inet aton看是否成功 類似地,如果位址族為af inet6且inet pton返回0,那麼就呼叫inet aton看是否成功,若成功返回其ipv4對映的ipv6位...