recvfrom
要求第5個參數是指向sockaddr
結構的指針,第6個參數是指向socklen_t
的指針。如何使用recvfrom獲得AF_INET6插槽的地址
man recvfrom (3)
說:
如果地址的實際長度比 供給sockaddr結構體的長度大,所存儲的地址將被截斷。
我不明白我怎麼能檢索與AF_INET6地址族發送插座的地址自的大小大於sockaddr
因此將由recvfrom
截斷。
我是否知道recvfrom
無法檢索大於sizeof(sockaddr)
的地址?
難道我得到它的權利,即使我定義投的一個實例是地址sockaddr*
並將它傳遞給recvfrom
,該功能將無法知道有足夠的空間可用於存儲的地址?
謝謝你的回答。我曾經認爲最後一個參數被提供給'recvfrom',以便函數用實際的發送者地址填充它。我錯了嗎?或者最後一個參數用於這兩個目的:在調用'recvfrom'指示可用的地址緩衝區大小以及調用後存儲實際地址大小之前? – Kolyunya
@Kolyunya它用於兩者。當你調用函數時,你告訴它套接字地址結構有多大,當它返回時,函數已經將它設置爲填充結構的大小。 –