bind()和accept()讓您指定第二個參數中結構的大小。但是我只看到了被傳遞的整個結構體的大小。爲什麼他們讓你指定尺寸?是否有任何情況下你會使用不同的數字?爲什麼bind()和accept()讓你指定結構的大小?
1
A
回答
0
規模可能取決於實現,插座和/或平臺的類型。因此,如果您在調用時傳遞此大小,則相同的代碼可以在不同的平臺上工作,而不管使用了多少額外的字段或填充。
1
的sockaddr
結構的大小可以根據您使用IPv4或IPv6變化,例如。
3
不同的套接字協議族使用不同類型的結構。例如,使用IPv4地址的TCP和UDP套接字利用sockaddr_in
結構(其大小爲16字節),而IPv6地址則使用結構,而不是28字節。
0
這是由於歷史原因:窮人的函數重載接受不同類型的套接字地址,IPv4一樣,UNIX,IPv6的。有關更多詳情,請參閱page 68 of UNIX Network Programming: The sockets networking API。
1
大小規定,因爲這些系統調用,執行在內核模式和內核的地址空間,內核不知道,否則有多少數據到內核地址空間和用戶地址空間之間複製。它看不到例如您是否使用IPv4或IPv6地址結構。
相關問題
- 1. 爲什麼Windows會讓我們在某些API中指定結構的大小?
- 2. 爲什麼你需要指定Java堆大小?
- 3. 爲什麼結構大小不正確
- 4. 什麼時候應該malloc指針的大小與結構本身的大小?
- 5. 爲什麼HttpClient不發送指定的Accept-Language字段?
- 6. 給定結構的大小
- 7. 將較大結構的指針轉換爲較小結構的指針
- 8. 爲什麼不同結構大小的輸出是相同的?
- 9. 爲什麼的sizeof(*節點)賦予這個結構的大小,而不是大小的指針
- 10. 爲什麼要更改結構大小,更改可執行文件的大小?
- 11. 爲什麼更大的結構更慢?
- 12. 爲什麼小型結構可以提高大型結構的性能?
- 13. 爲什麼WinDbg爲c#類和結構顯示相同的大小?
- 14. 數組的大小和指針的大小是什麼意思?
- 15. 爲什麼結構可以存儲自己的大小?
- 16. 爲什麼這兩個結構的大小不同?
- 17. 這個結構的大小是多少?爲什麼?
- 18. 爲什麼這個結構體12的大小不是10?
- 19. bind結果和fetch_assoc有什麼區別
- 20. 爲什麼std :: bind的返回類型未指定?
- 21. 爲什麼你不能定義一個結構模板?
- 22. 固定大小結構
- 23. 爲什麼UDP沒有「accept()」?
- 24. 爲什麼這個結構大小3而不是2?
- 25. 爲什麼C結構定義中有嵌套的指針?
- 26. 爲什麼你會用addr和addrlen設置爲0來調用accept()?
- 27. 爲什麼我的指令不能使用ng-bind-html指令?
- 28. 結構的大小
- 29. 爲什麼golang具有結構類型的值和指針
- 30. 使用結構指針和結構變量有什麼區別?
unix域套接字與tcp套接字與... – bmargulies 2012-03-13 21:41:30