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