c - 为什么必须在套接字函数中传递 sizeof?

标签 c sockets

我正在研究 C 中的套接字编程,我很好奇为什么您必须在 bind() 等函数中传递参数该参数的长度> 和 connect()? 为什么不在函数内部使用 sizeof()

最佳答案

因为它提供了一种简单的方法来使用相同的 API 处理许多不同类型的协议(protocol)。

由于套接字可以使用许多不同的底层协议(protocol)(正如@larsman 所指出的),调用无法确切地知道它正在处理哪种类型的结构。各种 struct sockaddr 类型都有一些基本的“继承”。

此外,它还提供了一些前向兼容性;针对库的一个版本编译的二进制文件可能会针对更高版本运行,其中地址类型可能已经增长(例如支持 IPv6)。

通过将调用者的大小想法传递给被调用函数,被调用函数可以注意不要覆盖内存。

关于c - 为什么必须在套接字函数中传递 sizeof?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13086915/

相关文章:

Objective-C 整数运算

c - Node.js 服务器接口(interface)与 Qt 中的 GUI 应用程序

c - 可靠地将相同的数据广播到 C 中的多个套接字

c++ - 是否强制要求短路逻辑运算符?和评价顺序?

c++ - 在 C++ 中使用 cflags枚举

c++ - 使用 CFITSIO 库从 FITS 表中读取可变长度数组

c - 使用 tcp 套接字时的数据转换模式是什么?

c# - 将 protobuf 序列化对象从 C# 发送到 java 服务器不起作用?

c++ - Solaris 10 -- 从 recvmsg() 的 UDP 多播数据包中获取 IP 源地址

java - 服务器套接字重新连接问题