UNIX網路程式設計 基礎套接字程式設計

2021-06-25 11:06:40 字數 703 閱讀 6138

就像《unix網路程式設計》裡面說的,我們可以將tcp的連線看成乙個**系統,那麼我們的套接字位址結構,就是我們的**裡面號碼,和其他能確定我們身份資訊的集合。

其中ipv4的,我們已經很熟悉,還有另外的,在ipv6如果系統支援長度字段,那麼sin6_len常值必須定義,在使用這一結構時我們必須分清到底,引數是從程序到核心,還是由核心到程序呢。第一種有:bind,connect,sento.第二種:accept,recvfrom, getsockname和getpeername.第二種有種常見的方法--——值---結果。

注意的是記憶體中儲存兩個位元組有兩種做法一種是將低序位元組儲存在起始位置,稱為小端,另外一種是將高位元組儲存在起始位址,稱為大端,這種序列稱為主機序列,這使得我們在實際的傳輸中遇到很大的問題,不同的機器可能對於網路位址和埠號的解析並不相同。所以我們需要一些函式來實現這些轉換。例如。htons,htonl,ntohs,ntohl。然後我們可以呼叫bzero對位址結構進行清零。

還有一些字串位址與網路位元組序轉換的函式,如 inet_aton ,inet_addr inet_ntoa,其中inet_addr已經是被淘汰的了,inet_ntoa返回的字串駐留在靜態記憶體中所以是不可重入的。、

會有兩個能使用在ipv4和ipv6的函式:inet_pton和inet_ntop

UNIX網路程式設計 套接字程式設計介紹

列印當前機器是小頭派還是大頭派型別 注意,如果沒有加這兩個標頭檔案 include include 編譯時候會報 警告 隱式宣告與內建函式 printf 不相容 這個錯誤 編譯 gcc o byteorder byteorder.c include include int main int argc...

UNIX網路程式設計 基本TCP套接字程式設計

一 基於tcp協議的網路程式 下圖是基於tcp協議的客戶端 伺服器程式的一般流程 伺服器呼叫socket bind listen 完成初始化後,呼叫accept 阻塞等待,處於監聽埠的狀態,客戶端呼叫socket 初始化後,呼叫connect 發出syn段並阻塞等待伺服器應答,伺服器應答乙個syn ...

網路套接字程式設計基礎

struct sockaddr和struct sockaddr in這兩個結構體用來處理網路通訊的位址。struct sockaddr sockaddr in在標頭檔案 include或 include中定義,該結構體解決了sockaddr的缺陷,把port和addr 分開儲存在兩個變數中,如下 s...