首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从套接字描述符中获取IP地址?

是否从套接字描述符中获取IP地址?
EN

Stack Overflow用户
提问于 2013-02-05 23:49:02
回答 4查看 30.3K关注 0票数 6

我打开了一个TCP socket服务器(我省略了一些东西,它取自here

代码语言:javascript
复制
sockfd = socket(p->ai_family, p->ai_socktype,
            p->ai_protocol))

是否可以从sockfd获取服务器的IP地址?如果没有,我应该去哪里找呢?

编辑:我想知道服务器的地址(这是在任何客户端连接之前)。

EN

回答 4

Stack Overflow用户

发布于 2013-02-05 23:56:20

如果您想知道套接字的另一端是谁,可以使用Linux中的getpeernamegetsockname会告诉你你是谁。不过,您可以在bind时间决定最初希望服务器所在的地址。

你可能也会发现这个问题很有用:bind socket to network interface

和W.Richard Stevens的"Unix Network Programming,Vol1“一书。

票数 11
EN

Stack Overflow用户

发布于 2013-02-06 00:10:25

在客户端连接之前,您不能使用套接字获取服务器的地址,因为它是未知的。

原则上,一台主机可以有多个IP。用于连接到服务器的IP是属于接口的IP,连接通过该接口到达。在连接到达之前,它是未知的。

即使您只有一个IP,连接也可能从机器内部到达,在这种情况下,地址将是127.0.0.1

因此,侦听套接字没有关于IP的信息。

您需要找到机器有哪些接口,以及它们的IP是什么。

票数 3
EN

Stack Overflow用户

发布于 2013-02-06 00:08:16

服务器的地址由您决定。

取决于传递给bind()函数的参数。

您可以指定single ip或将套接字绑定到主机的每个地址。

看看Bind man page

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14711392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档