我正在研究 C 中的套接字编程,我很好奇为什么您必须在 bind()
等函数中传递参数和该参数的长度> 和 connect()
?
为什么不在函数内部使用 sizeof()
?
最佳答案
因为它提供了一种简单的方法来使用相同的 API 处理许多不同类型的协议(protocol)。
由于套接字可以使用许多不同的底层协议(protocol)(正如@larsman 所指出的),调用无法确切地知道它正在处理哪种类型的结构。各种 struct sockaddr
类型都有一些基本的“继承”。
此外,它还提供了一些前向兼容性;针对库的一个版本编译的二进制文件可能会针对更高版本运行,其中地址类型可能已经增长(例如支持 IPv6)。
通过将调用者的大小想法传递给被调用函数,被调用函数可以注意不要覆盖内存。
关于c - 为什么必须在套接字函数中传递 sizeof?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13086915/