我正在学习 C 语言的套接字编程并下载了一个简单的 TCP 服务器源文件。我理解这些函数中除了第二个参数之外的每一行:
accept(socket_fd, (struct sockaddr *)&client, &length);
bind(socket_fd, (struct sockaddr *)&server, length);
accept+bind函数是“sys/types.h”和“sys/socket.h”中的典型函数,手册页将其描述为指向结构体的指针,但我仍然无法理解它是什么这里真的发生了。
有人可以解释一下第二个参数发生了什么吗?同一个表达式中的括号、指针和地址符号让我感到困惑。
提前致谢!
最佳答案
&
符号本质上意味着“获取值/对象的地址”。 (struct sockaddr *)
是一个强制转换。它告诉编译器您想要将该地址视为指向 sockaddr 结构的指针。因此,它一起告诉编译器可以将 client
视为 sockaddr 结构并将其地址传递给函数。对于 accept
函数,连接套接字的地址将存储在给定的结构中。
关于c - Accept() 函数; C语言的简单tcp服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3323101/