gpt4 book ai didi

C#/.NET : FInd out whether a server exists, 为 SVC 记录查询 DNS

转载 作者:行者123 更新时间:2023-11-30 14:19:27 25 4
gpt4 key购买 nike

编写一个 cleint/服务器工具 我的任务是尝试找到要连接的服务器。我很乐意为用户提供尽可能简单的服务。因此,我的想法是:

  • 检查特定服务器(按名称编码)是否存在(例如“mail.xxx”表示邮件服务器 - 我的示例不是邮件服务器;)
  • 以其他方式查询 DNS SVC 记录,允许管理员为特定服务(客户端连接到的服务)配置服务器位置。

结果是用户可能只需要输入一个域名,甚至可能不需要输入(在局域网环境中使用计算机的注册标准域)。

任何人都知道如何:

  • 要找出服务器是否存在并以最快的方式回答(即在线)?如果服务器不存在,TCP 可能需要很长时间。 UDP 样式的 ping 对我来说是个好主意。 PING 本身可能不可用。
  • 任何人都知道如何从 .NET 中最好地询问特定(默认)域中的 SVC 记录?

最佳答案

您可以在 .NET 中使用 ping,但它需要服务器的 IP 地址。

来自 here :

internal bool PingServer()
{
bool netOK = false;
// 164.110.12.144 is current server address for server: nwhqsesan02

byte[] AddrBytes = new byte[] { 164, 110, 12, 144 }; // byte array for server address.
using (System.Net.NetworkInformation.Ping png = new System.Net.NetworkInformation.Ping())
{
System.Net.IPAddress addr;
// Sending ping to a numeric byte address has the best change of
// never causing en exception, whether network connected or not.
addr = new System.Net.IPAddress(AddrBytes);
try
{
netOK = (png.Send(addr, 1500, new byte[] { 0, 1, 2, 3 }).Status == IPStatus.Success);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
netOK = false;
}
return netOK;
}
}

编辑:这个怎么样:

bool ConnectionExists()
{
try
{
System.Net.Sockets.TcpClient clnt=new System.Net.Sockets.TcpClient("www.google.com",80);
clnt.Close();
return true;
}
catch(System.Exception ex)
{
return false;
}
}

关于C#/.NET : FInd out whether a server exists, 为 SVC 记录查询 DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646755/

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