c - Accept() 函数; C语言的简单tcp服务器

标签 c sockets tcp

我正在学习 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/

相关文章:

Node.js - MJPEG TCP 流到 base64 图像

地穴(): Pointer to integer without cast?

c - 如何在 Windows 上的 gcc 中链接 cs50 C 库

c++ - 可移植轻量级 C++ 套接字包装器

c - TCP : Socket send/recv order

java - 使用 HttpURLConnection 时获取本地端口

java - 客户端代码 "randomly"在尝试创建 GzipInputstream 时失败

c - 如何将数据保存在已知内存位置一次以便在 x86 程序集中多次重用?

c - 读取结构中的数组会导致段错误

tcp - 我的 Arduino + Ethernet shield WebServer 草图有时无法连接到客户端。原因?