如何通过扫描局域网C#自动发现Web服务

本文关键字:发现 Web 服务 何通过 扫描 局域网 | 更新日期: 2023-09-27 18:27:33

我正在使用C#中的web服务(它是用Java编写的)。网络服务在局域网中可用,但在编译时我不知道服务器的地址。我需要扫描网络以找到托管web服务的计算机的IP地址。不过我确实知道港口。

目前,我有以下代码,它应该给我一个所有活动IP地址的列表,然后我计划找出写端口是否打开,一旦我找到一台打开了正确端口的计算机,我就会知道服务器的IP地址,我的想法是正确的吗?

List<IPAddress> ipList = new List<IPAddress>();
IPGlobalProperties network = IPGlobalProperties.GetIPGlobalProperties();
TcpConnectionInformation[] connections = network.GetActiveTcpConnections();
foreach (TcpConnectionInformation ipEnds in connections)
{
    ipList.Add(ipEnds.LocalEndPoint.Address);
    Console.WriteLine(ipEnds.LocalEndPoint.Address.ToString());
}

如何通过扫描局域网C#自动发现Web服务

web服务必须定义您可以发现的方式,例如,您抛出带有特定soap消息的广播,以这种方式,与该soap消息匹配的所有服务都必须对您做出响应。此外,您还可以使用DiscoveryClient类(C#)来发现服务,它允许您定义范围和其他规范。

您的C#应用程序是否在静态位置消耗数据?

在构建时,您可以修改您的Java应用程序,以联系消费服务,从而提供准确的位置。这样可以减少网络上的额外噪音。这也应该减少应用程序在尝试连接到指定端口上的每个IP地址时挂起的时间。