如何通过扫描LAN C#自动发现Web服务

时间:2014-10-22 21:43:26

标签: java c# web-services networking

我在C#中使用Web服务(用Java编写)。 Web服务在LAN中可用,但在编译时我不知道服务器的地址。我需要扫描网络以查找托管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());
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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