gpt4 book ai didi

c# - 使用 dns 服务器错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:30 25 4
gpt4 key购买 nike

我有一个远程桌面项目,需要使用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 服务器主机条目以对内部网络执行不同的解析,那就更好了。但是我现在不推荐给你这个水平。如果您有网络管理员,您可以请他/她为您做这件事。那么您不需要主机条目。

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

关于c# - 使用 dns 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41372983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com