2009-01-03 80 views
3

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

到目前为止,我已经能够实现这个目标的唯一方法是在创建服务器套接字时指定我的实际IP地址。如果我使用127.0.0.1,则只能从本地机器连接。

虽然这在理论上是好的,但问题是他们变成如何知道要使用哪个IP地址?我不知道如何通过Cocoa获得当前机器的IP地址,即使我可以,如果有多个有效的IP地址(例如机场和以太网连接)。我如何知道使用哪一个?我可以问用户,但这看起来不像他们可以/应该知道的。

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

谢谢你的时间。 :)

回答

9

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

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

+0

INADDR_ANY工作。 tyvm :) – Andy 2009-01-03 19:04:54

4

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

4

当进行任何种类的套接字编程签出Beej的套接字指南。它已经存在了很多年,涵盖了大部分的基础知识。

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