使用 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);
当用户连接到我的计算机时,它应该出现在这个列表中:
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 为您做这件事。那么您不需要主机条目。
如果您无法从外部网络连接上述代码,则需要检查防火墙设置。
我有一个远程桌面项目,需要使用 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);
当用户连接到我的计算机时,它应该出现在这个列表中:
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 为您做这件事。那么您不需要主机条目。
如果您无法从外部网络连接上述代码,则需要检查防火墙设置。