【问题标题】:Use UDP to check for available hosts?使用 UDP 检查可用主机?
【发布时间】:2013-09-29 12:58:55
【问题描述】:

我需要每台运行我的程序的计算机将它们的 IP 一遍又一遍地发送到多播,并且我需要每台运行的计算机能够构建运行该程序的可用主机列表。有没有办法在 C# 中使用 UDP 来做到这一点?

【问题讨论】:

  • 如果您打算使用 TCP,那么在您的 TCP Client 程序中放置一个计时器,如果未连接,请尝试连接到 TCP 服务器。并在您的 TCP 服务器端获取远程 IP 地址形式的套接字 RemoteEndPoint。
  • @Rezoan 我不是这个意思。我不想必须连接到服务器才能获得其 IP。我需要获取可用服务器的列表。 UDP 是无连接的,我需要服务器广播其 IP,以便程序建立可用服务器列表。
  • 哦,明白了。我只是说你可以通过这种方式完成。
  • 看这个:stackoverflow.com/questions/10832770/… 可能是这篇文章对您的要求有所了解
  • 我认为让一个服务器跟踪这个列表会更可靠。每台服务器可以每隔 X 秒/分钟建立一个可靠的 TCP 连接,这会让服务器知道它仍然可用,并且如果需要,还可以检索可用服务器的列表。

标签: c# .net vb.net udp udpclient


【解决方案1】:

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

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

注意:防火墙、NAT 等通常会丢弃传入的未经请求的数据,除非明确告知允许/转发它。在 LAN 上,上述内容通常无需更改即可工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    相关资源
    最近更新 更多