gpt4 book ai didi

c# - 在 C# 中发现

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

我必须为内部解决方案实现一些发现。

我们有两种软件:

  • 服务器:他们管理大量硬件设备并可以访问某些数据(.Net 远程处理)
  • 客户端:它们可以显示一个或多个服务器的数据(图表、统计信息、...)

目前我们是在客户端手动设置IP。

我们想实现一个发现

我们有以下要求:

  • 它必须在 c# 中可用
  • 当服务器启动时,它必须非常快地显示为可用
  • 关闭时相同
  • 如果服务器没有以干净的方式停止,我们可以有办法检测到它(不需要非常快,可以每 10-15 分钟检测一次)。
  • 它可以给我一些信息(服务器版本,要使用的端口,...)
  • 我们的客户端计算机有多个网卡,我们必须在每个网卡上发现服务器

您是否有协议(protocol)、库、...建议?

我们尝试了 UPnP,但似乎在 c# 中没有很好的服务器+客户端实现来满足我们的要求

最佳答案

使用发现应用程序(客户端)的 UDP 广播:

int broadcastPort = //something
byte[] msg = //something

//Cycle this for all IP adresses
IPAddress broadcastIp = //Broadcast address for this net
IPEndPoint destinationEndpoint = new IPEndPoint(broadcastIp, broadcastPort);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
sock.SendTo(msg, broadcastEndpoint);

让发现的应用程序(服务器)回答,使用 UdpClient.Receive() 接收回答,它会为您提供应答站的 IP。

关于c# - 在 C# 中发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808809/

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