【发布时间】:2013-12-26 15:32:55
【问题描述】:
我知道这个问题似乎很典型并且多次回答,但我认为如果您阅读详细信息,它并不常见(我没有找到)。
关键是我正在用 c 开发一个 unix 服务,它打开一个套接字并等待连接,当我有一个连接时,我 创建一个新进程来处理它,因此可以同时打开多个连接。
int newfd = accept(sockfd, (struct sockaddr *)&clientaddr, (socklen_t*)&clientaddr_size);
稍后(在其他一些方法之后和内部和代码)子进程将连接信息保存到 BBDD,我还需要,准确地说时刻,获取打开正在处理的连接的 IP 地址。
因为可以同时有多个连接,并且我传递给accept方法的变量struct sockaddr_in clientaddr是所有进程共享的我不确定以后通过这种方式获取 IP 地址信息是否是个好主意,因为那时我可以从另一个打开的连接中获取 IP 地址。
我希望能够从我从接受方法获得的文件描述符int newfd 访问 IP 地址(返回的整数)。可能吗?还是我误解了文件描述符函数?
【问题讨论】:
-
谢谢@alk 我看到的很相似,虽然(肯定是因为我的英语),我不需要绑定地址,我需要客户地址。现在我看到了类似的方法,但是使用 getpeername() 方法:)
-
啊,我明白了。因此,您可能想为自己的问题添加答案,甚至接受它。
-
好的。这个是@JosephQuinsey,既平等又简单。抱歉我之前没找到...
标签: c sockets unix fork file-descriptor