套介面位址結構是在程序和核心之間傳遞的
1. 從程序到核心傳遞套介面結構位址有三個函式:bind,connect和sendto,這三個函式的乙個引數是指向套接字姐結構位址的乙個指標,
另乙個引數是結構的整數大小。例如:
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套介面的值 結果引數
套介面位址結構是在程序和核心中之間傳遞的。1.從程序到核心傳遞套介面位址結構有三個函式 bind,connet和senddto,這三個函式的乙個引數是指向套接字位址結構的乙個指 針,另乙個引數是結構的整數大小。例如 struct sockaddr in serv connect sockfd,sa ...
TCP套介面程式設計 Socket
tcp套介面程式設計 socket socket起源於unix,而unix linux基本哲學之一就是 一切皆檔案 都可以用 開啟open 讀寫write read 關閉close 模式來操作。我的理解就是socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其...
值 結果引數
當往乙個套接字函式傳遞乙個套接字位址結構時,該結構總是以引用形式來傳遞,也就是說傳遞的是指向該結構的乙個指標。該結構的長度也作為乙個引數來傳遞,不過其傳遞方式取決於該結構的傳遞方向 程序 核心 核心 程序 這些函式的乙個引數是指向某個套接字位址結構的指標,另乙個引數是該結構的整數大小 這4個函式的其...