Unix套接字编程中如何获取本地IP地址和端口?

2023-12-01

我用它作为地址来创建一个新服务器(socket(), bind(), listen()):

struct sockaddr_in newServer;
memset(&newServer, 0, sizeof(newServer));
newServer.sin_family = AF_INET;
newServer.sin_addr.s_addr = htonl(INADDR_ANY);
newServer.sin_port = htons(UNUSED_PORT);

宏 UNUSED_PORT 定义为 0。

我希望服务器能够监听任何接口和未使用的端口。

我尝试使用getsockname()获取我的本地 IP 地址和端口,但我得到了一些奇怪的输出。输出代码如下:

struct sockaddr_in localAddress;
socklen_t addressLength;
getsockname(newServerfd, (struct sockaddr*)&localAddress,   \
                &addressLength);
printf("local address: %s\n", inet_ntoa( localAddress.sin_addr));
printf("local port: %d\n", (int) ntohs(localAddress.sin_port));

例如,我得到 0.255.255.255:0、0.0.0.0:0、255.127.0.0:36237 等。 我的系统是Mac OS X 10.7.3。

- 更新 -

使用后socklen_t addressLength = sizeof(localAddress);(感谢@cnicutar和@Jonathan Leffler),我总是得到0.0.0.0作为本地IP;可以吗?


你需要初始化addressLength打电话之前getsockname:

socklen_t addressLength = sizeof(localAddress);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unix套接字编程中如何获取本地IP地址和端口? 的相关文章

  • Java 中的 TreeSet 与 C#.net 的等效项

    我有 Java 代码 其中包含TreeSet 我想将代码转换为 C 我可以使用哪个等效集合 如果没有 请提出替代方案 那将是系统 集合 通用 SortedSet
  • 通过 Active Directory 搜索进行有效分页

    在 NET 中使用 Active Directory 搜索进行分页的有效方法是什么 在 AD 中进行搜索的方法有很多 但到目前为止我找不到如何有效地进行搜索 我希望能够表明Skip and Take参数并能够检索结果中与我的搜索条件匹配的记
  • 异步回调到BackgroundWorker

    我想使用 NET FTP 库 http netftp codeplex com http netftp codeplex com 该库提供 BeginOpenRead string AsyncCallback object 使用异步编程模型
  • do { ... } while (0) — 它有什么用? [复制]

    这个问题在这里已经有答案了 我已经看到这个表情十多年了 我一直在努力思考它有什么好处 因为我主要在 defines 中看到它 所以我认为它对于内部作用域变量声明和使用中断 而不是 gotos 很有用 对其他方面有好处吗 你用它吗 这是 C
  • 未定义的参考错误 - rand

    我正在创建一个命令行 C 测试应用程序 可执行 以便在我的 root Android 设备上运行 该可执行文件使用多个预构建的 C 库 其中之一使用 rand 在链接状态期间我收到错误 rand 的未定义引用 为了检查路径是否设置正确 我尝
  • Microsoft.Web.Administration 内存泄漏

    拥有一个 Windows 服务 除其他外 还可以监视 IIS 应用程序池 如果任何池已配置应用程序但未运行 则该池 池 将启动 这已经运行良好一段时间了 最近发现该服务存在内存泄漏 查看内存转储 罪魁祸首是用于检查应用程序池的 Micros
  • 未构建 csproj 时抑制 AfterBuild 目标

    我在 MSBuild 中有一个构建后目标来复制一些构建输出 这是 linkedin 作为对AfterBuild目标 暴露于Microsoft CSharp targets
  • 如何使用 VB.NET 或 C#.NET 代码从 yahoo 邮件 ID 发送邮件

    我想从我的 yahoomail Id 发送邮件 如何使用 VB NET 或 C NET 代码从 yahoo mail Id 发送邮件 需要善意的帮助 提前谢谢 西瓦库马尔 以下是一些制作基本 html 电子邮件消息的示例 http help
  • 隐藏树视图列表中的节点。在 C# 中

    我正在使用 VS 2005 C 正在处理一个未完成的 WinForm 我已将 XML 解析为树视图列表 但遇到了一些问题 我想知道是否有一种方法可以隐藏 过滤 删除名称中包含 this text 的某个节点 而不必依赖文本框 这就是我对这个
  • 如何设置环境名称(IHostingEnvironment.EnvironmentName)?

    默认 ASP NET Core Web 项目包含以下行Startup cs if string Equals env EnvironmentName Development StringComparison OrdinalIgnoreCas
  • “应用程序配置”文件中的最大键/值长度

    允许的最大长度是多少MyKey and MyValue在配置文件中
  • C# 如何在没有 GacUtil 的情况下在 GAC 中注册程序集?

    我需要使用批处理文件在 GAC 中注册程序集 有没有办法找到安装位置GacUtil exe或者有没有办法在没有 GacUtil 的情况下注册程序集 Your bestbet is to use a powershell script tha
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 当 MSB 位等于 0 时如何以十六进制格式打印它们

    我需要使用打印变量HEX格式 问题是当我的变量很小时 MSB 等于 0 因此不会打印它们 ex uint16 t var 10 0x000A h gt 我需要打印 000A 但无论我做什么它总是打印 A 我怎样才能让它发挥作用 您可以添加前
  • 如何将 Activator.CreateInstance 与字符串一起使用?

    在我的反射代码中 我的通用代码部分遇到了问题 特别是当我使用字符串时 var oVal object Test var oType oVal GetType var sz Activator CreateInstance oType oVa
  • CGAL:如何有效计算多面体的面面积?

    我有一个多面体 其面是三角形 我知道在 CGAL 中 Triangle 3 类提供了 squared area 方法 通过它我们可以计算三角形的面积 有什么方法可以将其应用到多面体方面吗 或者关于如何计算每个面的面积有什么想法吗 这是一个例
  • 从多页 tiff 中提取帧 - C#

    有一个多页 tiff 我想从此 Tiff 文件中提取第 n 页 帧 n 并保存它 如果我的多页 tiff 有 3 帧 在我提取一页 帧后 我想留下 1 张图像有 2 页 帧 并且 1 张图像只有 1 页 帧 下面是一些代码 用于将多帧 ti
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • 是否有在 Windows 窗体应用程序中以最少的设置使用 CefGlue 或 CefSharp 的示例?

    我 仍然 使用 Visual Studio 2005 并希望将 webkit 浏览器嵌入到 c winforms 应用程序中 最好作为 winforms 控件 我正在寻找 CefGlue 或 CefSharp 的简单示例以及所需的最少 dl
  • 实体框架中对象属性中的 NULL 值

    Tables Article Author Comment 1篇文章和1位作者可以有 评论 数据库中有 1 篇文章 1 位作者和 1 条评论 问题是 该代码 myBD my bd new myBD var articles by bd Ar

随机推荐