套介面位址結構是在程序和核心中之間傳遞的。
1. 從程序到核心傳遞套介面位址結構有三個函式:bind, connet和senddto,這三個函式的乙個引數是指向套接字位址結構的乙個指 針,另乙個引數是結構的整數大小。例如:
struct sockaddr_in serv;
connect(sockfd, (sa*)&serv, sizeof(serv));
通過將指標和指標所指向結構的大小傳遞給核心,那麼從程序到核心的過程便知道了要拷貝資料的多少。
2. 從核心到程序傳遞套介面地質結構有四個函式: accept, recvfrom, getsockname和getpeername。這四個函式的兩個相同引數是:指 向要介面位址結構的指標和指向表示結構大小的整數的指標,例如:
struct sockaddr_un cli;
socklen_t len = sizeof(cli);
getpeername(unixfd, (sa*)&cli, &len);
之所以將結構大小由整數轉為指向整數的指標,是因為:當函式被呼叫時,結構大小事乙個值(value,該值告訴核心該結構的大小,避免資料的讀取越界);當函式返回時,結構大小是一種結果(result, 核心通過此結果來告訴程序它在這結構裡實際儲存了多少資訊)。因此這種型別的引數叫做值-結果(value-result)引數,如圖。
(資料參考:unix網路程式設計(第一卷:套介面api))
socket套介面的 值 結果引數
套介面位址結構是在程序和核心之間傳遞的 1.從程序到核心傳遞套介面結構位址有三個函式 bind,connect和sendto,這三個函式的乙個引數是指向套接字姐結構位址的乙個指標,另乙個引數是結構的整數大小。例如 struct sockaddr in serv connect sockfd,sa s...
UNIX網路程式設計讀書筆記 套介面選項
有很多方法來獲取和設定影響套介面的選項 這兩個函式僅用於套介面。include int getsockopt int sockfd,int level,int optname,void optval,socklen t optlen int setsockopt int sockfd,int lev...
UNIX網路程式設計讀書筆記 原始套介面
應用程式可以繞過傳輸層而直接使用ipv4和ipv6,這稱為原始套介面 raw socket 原始套介面是一種對原始網路報文進行處理的套介面。原始套介面主要應用在底層網路程式設計上,同時也是網路黑客的必備手段。例如sniffer 拒絕服務 dos ip位址欺騙等都需要在原始套接字的基礎上實現。與原始套...