gpt4 book ai didi

c++ - 为什么函数accept()和recv()中地址长度参数是指针?

转载 作者:行者123 更新时间:2023-11-30 16:33:26 24 4
gpt4 key购买 nike

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

我不明白为什么 addrlen 参数是指针,而不是 socklen_t

最佳答案

那是因为它是一个输入/输出参数,并且在 C 接口(interface)函数中您别无选择,只能在变量上传递指针,以便被调用者可以在需要时更改它。

来自man pages :

The addrlen argument is a value-result argument: the caller must initialize it to contain the size (in bytes) of the structure pointed to by addr; on return it will contain the actual size of the peer address."

如您所见,即使您指定了尺寸,系统也会返回实际尺寸(可能与您指定的尺寸不同)

对于这种情况也是如此:

When addr is NULL, nothing is filled in; in this case, addrlen is not used, and should also be NULL.

这里,为什么要传递一个不使用的值?

关于c++ - 为什么函数accept()和recv()中地址长度参数是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49766336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com