C# 是否使用UDP检查可用主机?

C# 是否使用UDP检查可用主机?,c#,.net,vb.net,udp,udpclient,C#,.net,Vb.net,Udp,Udpclient,我需要每台运行我的程序的计算机将其IP发送到多播,并且我需要每台运行的计算机能够构建运行该程序的可用主机列表。在C#中使用UDP有什么方法可以做到这一点吗?您想要的是广播而不是多播。是的,这是可能的,您需要: 将数据发送到端口号上的广播地址,例如192.168.255.255。主机正在其上运行。这将向连接到192.168.x.x子网的所有人发送数据。(255.255.255.255是有效的-发送给每个人-但这几乎总是被删除,可能不会起作用) 您不需要在广播中包含您的IP,因为收件人可以看到他们

我需要每台运行我的程序的计算机将其IP发送到多播,并且我需要每台运行的计算机能够构建运行该程序的可用主机列表。在C#中使用UDP有什么方法可以做到这一点吗?

您想要的是广播而不是多播。是的,这是可能的,您需要:

  • 将数据发送到端口号上的广播地址,例如192.168.255.255。主机正在其上运行。这将向连接到192.168.x.x子网的所有人发送数据。(255.255.255.255是有效的-发送给每个人-但这几乎总是被删除,可能不会起作用)
  • 您不需要在广播中包含您的IP,因为收件人可以看到他们从中接收数据的IP端点

注意:防火墙、NAT等通常会丢弃传入的未经请求的数据,除非明确告知允许/转发数据。在局域网上,上述内容通常不会发生变化。

如果计划使用TCP,请在TCP客户端程序中设置计时器,如果未连接,请尝试连接到TCP服务器。在TCP服务器端,从sockets RemoteEndPoint获取远程IP地址。@Rezoan我不是这个意思。我不希望必须连接到服务器才能获得其IP。我需要一个可用服务器的列表。UDP是无连接的,我需要服务器广播它的IP,这样程序就会建立一个可用服务器的列表。哦,明白了。我只是说你可以用这种方式来完成。看这篇文章:也许这篇文章能说明你的需求。我认为让一台服务器跟踪这个列表会更可靠。每台服务器可以每X秒/分钟与它建立一个可靠的TCP连接,这将让服务器知道它仍然可用,并且如果需要,还可以检索可用服务器的列表。