Sub*_*noy 3 c sockets networking
在 C 套接字编程中,accept()声明如下所示:
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
Run Code Online (Sandbox Code Playgroud)
sockfd我能理解,的用途struct sockaddr *addr。
但为什么我们必须传递套接字长度的地址,本来可以的socklen_t。因为如果accept()函数需要长度,那么它可以通过 来获取socklen_t。为什么函数的原型要这样声明?
那么使用 type 的原因是什么socklen_t *?
在与它所接受的套接字的地址/协议系列无关的代码中,它可能使用通用sockaddr_storage结构来保存结果。所指向的初始值socklen_t就是该存储的大小;返回后的值accept是结果对等地址的实际大小。此外,某些地址/协议系列AF_UNIX具有可变长度地址,因此即使您知道类型,您也可能不知道大小。
| 归档时间: |
|
| 查看次数: |
3398 次 |
| 最近记录: |