使用 dns 服务器错误

Use dns server error

我有一个远程桌面项目,需要使用 DNS 服务器连接

我报错说ip的格式无效

 private static void ConnectToServer()
        {
            int attempts = 0;

            while (!clientSocket.Connected)
            {
                try
                {
                    attempts++;
                    Console.WriteLine("Connection attempt " + attempts);

                    // clientSocket.Connect(IPAddress.Parse(Dns.GetHostAddresses("kamikazehc.ddns.net")), port);
                    clientSocket.Connect(IPAddress.Parse("kamikazehc.ddns.net"), port); 
                    Thread.Sleep(100);
                }
                catch (SocketException)
                {
                    Console.Clear();
                }
            }

            Console.Clear();
            Console.WriteLine("Connected");
        }

编辑:

这段代码留给外部用户,我的电脑是管理员模式

当用户运行控制台时,他应该连接 kamikazehc.ddns.net,(我的电脑)

Kamikazehc.ddns.net 解析为 189.6.26.203。

我只能本地连接 使用:

clientSocket.Connect(IPAddress.Parse("192.168.1.102"), port);

当用户连接到我的计算机时,它应该出现在这个列表中:

http://prntscr.com/dpelr6

private static Socket clientSocket = new Socket
        (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

   private const int port = 100; // same as server port

您应该使用 Dns.GetHostEntry 将域名解析为 IP 地址。

IPAddress.Parse 仅将 IP 地址字符串转换为 IPAddress 实例。

尝试

clientSocket.Connect(Dns.GetHostEntry("kamikazehc.ddns.net").AddressList[0], port); 

注意:此处主机条目中返回的第一个 IP 地址用于连接。

编辑:
来自评论:您的问题是因为您不清楚 TCP IP 网络的工作方式。您需要将名称解析为本地 IP。通常 Public IP 在本地网络中不起作用。您可以执行以下操作。

在 system32/etc/drivers/hosts 文件中添加主机条目

192.168.1.102    kamikazehc.ddns.net

如果您可以修改您的 DNS 服务器主机条目以对内部网络执行不同的解析,那就更好了。但是我现在不推荐给你这个水平。如果您有网络管理员,您可以要求 him/her 为您做这件事。那么您不需要主机条目。

如果您无法从外部网络连接上述代码,则需要检查防火墙设置。