標籤:形式 ipv6 null 串連 unsigned str windows 計數 表示
1 sockaddr_in、sockaddr_in6和sockadd_un等都可以強制轉換為sockaddr.
2 IP地址是電分十進位形式的字串,但是在網路中使用的是unsigned int類型的數才能使用。
- in_addr_t inet_addr(const char* strptr); 返回的是ipv4的usigned int類型的地址。
- int inet_aton(const char* cp, struct in_addr* inp); 如果成功返回非零,不成功返回零
- char* inet_ntoa();如果失敗返回NULL,如果成功返回正確的點分十進位地址。
- int net_pton(int af, const char* src, void* dst); 點分十進位轉換成網路地址。適用於ipv4和ipv6
- const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt); 網路位址轉譯成點分十進位地址。適用於ipv4和ipv6
3 函數listen, 第二個參數backlog,表示核心監聽隊列的最大長度,如果超過了設定值+1的數量(在windows下測試是超過設定值的串連,就會串連不上),則伺服器將不受理新的客戶串連。只要不accept,核心隊列中的監聽到的socket數量不會減少.
4 close: 當我們關閉串連時,使用close,其實只是將檔案描述符的引用計數減1,一次fork會使父進程中開啟的問見描述符引用計數加1,所以在這種情況下我們應該對父子進程中的檔案描述符都執行一次close.如果想要直接終止串連,可以使用shutdown函數,參數howto的取值分別為shut_rd, shut_wr和shut_rdwr。
5 msg_oob資料。send和recv函數可以設定訊息選項,當設定為緊急資料時(msg_oob),只能有一個位元組緊急資料,如果發送的訊息是多位元組訊息,只有最有一個位元組是緊急資料。
6 udp發送資料使用sendmsg, 接收資料使用recvmsg,跟send和recv差不多,只不過是socket地址結構的參數。這兩個函數也可以用於tcp,用於tcp時,將後面兩個參數設定為null即可。
TCP/IP 學習 --- 4(linux網路基礎api)