socket套介面的 值 結果引數

2021-06-27 21:30:41 字數 768 閱讀 9297

套介面位址結構是在程序和核心之間傳遞的

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個函式的其...