连接没有本地静态IP的本地计算机

时间:2014-11-27 08:42:51

标签: c# network-programming ip-address

我有3台电脑,一台是服务器,另一台是客户。客户端通过输入服务器本地IP连接到服务器。一切正常,但是当路由器重新启动并且服务器被分配了不同的本地IP时会出现问题。现在,需要在客户端再次输入服务器的IP地址。我可以通过使用本地静态IP来解决这个问题,但是可以在不设置本地静态IP的情况下进行连接吗?

编辑: 使用TCP Socket。

3 个答案:

答案 0 :(得分:2)

使用主机名连接到远程计算机而不是其IP地址。 您将不得不依赖DNS查找。

答案 1 :(得分:1)

因为您使用路由器的DHCP功能而出现问题。 DHCP的D代表“动态”,因此在某些情况下可能会更改IP地址。

最简单的解决方案是“不使用DHCP”。

[解决方案详情]

为您的PC分配固定的IP地址,并使用该IP地址访问它们。

通常,路由器使用的本地IP地址范围为192.168.1.1到192.168.1.255,192.168.1.1用于路由器本身。

您可以分别为3台PC使用IP地址192.168.1.2,192.168.1.3和192.168.1.4。

答案 2 :(得分:1)

您可以做的一件事是,如何为服务器提供一个独特的端点,例如

http://<server>/isthisme

然后,您只需浏览网络中的所有IP地址,然后尝试访问该端点。它返回200即服务器的那个。

要获得IP有点复杂,首先需要获取自己的IP,然后使用子网掩码,最后您可以采用以下方式:

for (int p1 = 1; p1 < netmask[0]; p1++) {
    for (int p2 = 1; p2 < netmask[1]; p2++) {
        for (int p3 = 1; p3 < netmask[2]; p3++) {
            for (int p4 = 1; p4 < netmask[3]; p4++) {
                var ip = new IPAdress(p1, p2, p3, p4);
                if (trytoreach(ip)) {
                    return ip;
                }
            }
        }
    }
}

这是你可以通过的方式。它没有优化,所以请随意^^

以下是方法https://gist.github.com/DerKnerd/ff9c34087955efce0970的要点。只需要找出子网掩码的部分。我不保证它会起作用。