【问题标题】:Running a Socket Server in Cocoa在 Cocoa 中运行 Socket 服务器
【发布时间】:2009-01-03 17:27:25
【问题描述】:

我正在尝试编写一个程序,该程序使用套接字通过网络与自身的其他实例连接。由于最终我也想编写 Windows 版本,因此我目前在 OS X 端使用 BSD 套接字,以便确保它与(最终)Windows 版本兼容。

到目前为止,我能够让它工作的唯一方法是在创建服务器套接字时指定我的实际 IP 地址。如果我改用 127.0.0.1,那么我只能从本地计算机连接。

虽然理论上这很好,但问题变成了我如何知道要使用哪个 IP 地址?我不确定如何通过 Cocoa 获取当前机器的 IP 地址,即使可以,如果有多个有效的 IP 地址(例如机场和以太网连接)怎么办。我怎么知道该使用哪一个?我可以问用户,但这似乎不是他们可以/应该知道的事情。

如有必要,我可以提供我的客户端和服务器连接代码,但是鉴于我能够从远程计算机建立连接,我认为问题不在我的代码中。

感谢您的宝贵时间。 :)

【问题讨论】:

    标签: objective-c cocoa macos sockets


    【解决方案1】:

    使用 0.0.0.0 作为要监听的 IP 地址。它会监听所有地址。

    很可能,您正在使用的套接字 API 中为此地址定义了一个常量。如果您使用的是标准 C 套接字 API,则为 INADDR_ANY。

    【讨论】:

      【解决方案2】:

      有一个名为Bonjour 的网络可发现协议,您可以使用它在网络上发布您的服务器,然后您的客户端可以自动连接到它们。它是跨平台的,但在其他系统上通常称为零配置。

      【讨论】:

        【解决方案3】:

        在进行任何类型的套接字编程时,请查看 Beej 的套接字指南。它已经存在了很长时间,涵盖了大部分基础知识。

        http://beej.us/guide/bgnet/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-08
          • 2012-12-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多