【问题标题】:Find a java server on the LAN在局域网上找一个java服务器
【发布时间】:2015-03-18 11:13:53
【问题描述】:

如何通过仅向客户端提供 IP 地址的网络部分来在 LAN 上找到 Java 服务器? 我可以这样做吗?

Socket sock = new Socket("10.10.10.*", 4444);

【问题讨论】:

  • 你能解释一下你的问题吗?
  • 我需要在网络上找到一个java服务器而不知道它的IP地址,我的问题是:我可以只传递服务器IP地址的一部分吗?
  • 这些(link1link2)是您正在寻找的机器人。要确定 IP 范围,您需要获取subnetmask。您会找到 IP 范围 here

标签: java sockets


【解决方案1】:

我遇到了同样的问题,这就是我的解决方法:UDP 广播。 它将允许客户端连接到服务器,无论其 IP 是什么,因此您不必硬编码 IP 地址,只需硬编码用于 UDP 的端口(见下文)。

这是它的工作原理:

  1. 服务器监视端口 n
  2. 客户端在他可以到达的所有端口发送数据包
  3. 当消息到达服务器的端口时,服务器会响应发送者并包含自己的 IP 地址
  4. 客户端创建一个套接字并连接到他从服务器获得的 IP 地址

这是帮助我的教程:http://michieldemey.be/blog/network-discovery-using-udp-broadcast/

【讨论】:

  • 如果局域网禁止广播,可能会出现问题。虽然带有普通集线器/交换机的简单对等网络可以允许它(取决于设备),但您可能会在受管理的域网络中遇到问题。
  • DatagramPacket#recieve 会阻塞直到收到响应。如果没有发送响应,是否有办法(在多线程程序中)取消接收并继续执行线程?
猜你喜欢
  • 2017-06-24
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2012-09-13
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
相关资源
最近更新 更多