2011-08-16 29 views
1

我正在通过WLAN使用BSD套接字。我注意到我的服务器计算机的IP地址偶尔会在连接到它时发生更改。问题是我把我的代码中的IP地址作为字符串输入。所以无论什么时候改变,我都必须进入代码并在那里改变它。我该如何更改代码,以便它可以使用当时的IP?这是在服务器代码如何使用BSD套接字查找IP地址?

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0) 

和客户端是相同的。我试图在双方的地址NULL,但客户端不会连接,只是给我一个“连接被拒绝”的错误。

感谢您的任何帮助。

回答

2

使用可以在主机文件或DNS中查找的域名,而不是IP地址。

0

命令行参数如何?

int main(inr argc, char* argv[]) { 
    const char* addr = "myfancyhost.domain.com"; /* default address */ 
    if (argc > 1) { 
     addr = argv[1]; /* explicit address */ 
    } 
    if ((status = getaddrinfo(addr, ... 
+0

嗯,我不想每次运行程序时都检查IP地址。我只是想让它自己获得IP。 – Sterling

+0

我想你是在寻找DNS。 –

0

给您的服务器的名称,并使用gethostbyname找到其地址(并且,通常把服务器名称到一个配置文件,而不是硬编码,如果你可以”虽然硬编码默认t找到配置文件不会伤害)。

+0

这可能是一个愚蠢的问题,但我该如何“给我的服务器一个名字?” – Sterling

+0

@Sterling:通常通过为它添加一个入口到你的DNS(但这更像是一个serverfault的事情......) –