Java 如何通过扫描lanc自动发现Web服务#

Java 如何通过扫描lanc自动发现Web服务#,java,c#,web-services,networking,Java,C#,Web Services,Networking,我正在用C#使用一个web服务(用Java编写)。网络服务在局域网中可用,但在编译时我不知道服务器的地址。我需要扫描网络以查找承载web服务的计算机的IP地址。不过我知道港口 目前,我有以下代码,它应该给我一个所有活动IP地址的列表,然后我计划尝试找出写入端口是否打开,一旦我找到一台打开正确端口的计算机,我就会知道服务器的IP地址,我的思路是否正确 List<IPAddress> ipList = new List<IPAddress>(); IPGlobalProper

我正在用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());
}
List ipList=new List();
IPGlobalProperties网络=IPGlobalProperties.GetIPGlobalProperties();
TcpConnectionInformation[]connections=network.GetActiveTcpConnections();
foreach(TcpConnectionInformation ipEnds in connections)
{
添加(ipEnds.LocalEndPoint.Address);
WriteLine(ipEnds.LocalEndPoint.Address.ToString());
}

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

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


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

是否确实要扫描网络上的每台计算机以查找服务?你能修改服务吗?@Steve我需要在web服务中做什么样的更改才能让它更简单?如果你有一系列IP地址,你可以使用linux上的netcat实用程序(通常位于/bin/nc)检查特定IP上的端口是否“正常”。例如,这个简单的bash脚本将为您标识主机:
$listOfIps=“10.11.176.1 10.11.176.2 10.11.176.7”;对于主机,单位为$listOfIps;如果nc-z-w5$host 22,则执行此操作;然后echo“服务在$host上的端口22上启动”;打破fi;完成
不,我必须用C语言编程完成。在编译时我对局域网一无所知@LinuxFan在这种情况下,您可以尝试使用connect()系统调用连接到LAN中的每个(IP、端口)对,并检查返回值是否成功。Netcat也这样做,但在添加超时等方面有一些优化。