如何在本地网络上找到服务器的所有正在运行的实例?

时间:2019-01-29 16:35:32

标签: java sockets networking

我有一个服务器应用程序(仅启动一个服务器套接字)和一个客户端应用程序,让我们假设我在同一局域网上启动了多个服务器应用程序实例,我的客户端应用程序是否有办法列出所有正在运行的服务器本地网络上的服务器(也许通过我可以定义的某种名称或ID?)?谢谢

2 个答案:

答案 0 :(得分:2)

通常可以使用以下任一方法解决

  • UDP子网广播,其中每个服务器实例在给定端口上打开侦听UDP套接字,然后回复在该端口上接收到的数据包。每个答复都被发送回接收该消息的发件人,并且可以包含您想要的任何标识数据。然后,客户端可以在该端口上广播数据包,并收集从连接到同一子网的服务器收到的所有答复。

  • 任意数量的可用network service discovery protocols,例如SSDP

答案 1 :(得分:1)

如果您使用的是Linux,请使用 nmap zmap

要查看计算机上打开的端口,请执行以下操作:

Windows :使用具有管理员权限的CMD

 netstat -a -b

-a显示所有连接和监听端口

Powershell:

-Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess