C# c语言中的发现#
我必须为内部解决方案实现一些发现 我们有两种软件:C# c语言中的发现#,c#,.net,discovery,C#,.net,Discovery,我必须为内部解决方案实现一些发现 我们有两种软件: 服务器:它们管理大量硬件设备,并可以访问某些数据(.Net远程处理) 客户端:它们可以显示一个或多个服务器的数据(图形、统计数据等) 目前,我们正在客户端上手动设置IP 我们希望实现一个发现 我们有以下要求: 它必须在c语言中可用# 当服务器启动时,它必须快速显示为可用 它关闭时也是这样 如果服务器没有以干净的方式停止,我们可以有一种方法来检测它(不需要非常快,可以每10-15分钟进行一次) 它可以给我一些信息(服务器版本、要使用的端口等
- 服务器:它们管理大量硬件设备,并可以访问某些数据(.Net远程处理)
- 客户端:它们可以显示一个或多个服务器的数据(图形、统计数据等)
- 它必须在c语言中可用#
- 当服务器启动时,它必须快速显示为可用
- 它关闭时也是这样
- 如果服务器没有以干净的方式停止,我们可以有一种方法来检测它(不需要非常快,可以每10-15分钟进行一次)
- 它可以给我一些信息(服务器版本、要使用的端口等)
- 我们有多个网卡的客户端计算机,我们必须在每个网卡上发现服务器
我们尝试了UPnP,但在c#中似乎没有满足我们要求的好的服务器+客户端实现使用发现应用程序(客户端)的UDP广播:
并拥有发现的应用程序(服务器)应答,要接收应答,请使用UdpClient.receive(),它为您提供应答站的IP。使用发现应用程序(客户端)的UDP广播:
并拥有发现的应用程序(服务器)答案,要接收答案,请使用
UdpClient.receive()
,它将为您提供应答站的IP。可能会引起兴趣。定期发送UDP数据包有什么问题?您可以通过发送/接收来推出自己的轻量级解决方案,或者使用。@GrantThomas:我不知道,我在想,如果我们不使用WCF,那么使用WCF发现就没有多大意义services@Dennis:定期数据包必须非常接近(具有反应性),这将非常消耗网络,可能会引起兴趣。定期发送UDP数据包有什么问题?您可以通过发送/接收来推出自己的轻量级解决方案,格兰托马斯:我不知道,我在想,如果我们不使用WCF,那么使用WCF发现就没有多大意义services@Dennis:周期性数据包必须非常接近(具有反应性)这将非常耗费网络使用UdpClient发送消息和使用此套接字之间的主要区别是什么?使用UdpClient发送消息和使用此套接字之间的主要区别是什么?
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);