发现客户连接到WiFi网络(Discovering clients on a wifi networ

2019-07-30 12:30发布

我书面方式一个Java应用程序,我需要快速发现任何有线或无线局域网其他任何版本的客户端,以建立一个TCP连接。

什么是这样做的最佳方式? 有没有会做这个库或代码片段?

Answer 1:

我猜你需要做你的应用程序的端口扫描在您的子网中的所有IP地址。

究竟什么是可用IP - 或什么是你的子网是怎么回事?
我怕确定可能变成是不可能的,因为网络的设计是透明的应用程序。

所以,我会用蛮力:选择你的IP和改变的最后一个字节。 也许是太多了,可能是不够的,虽然。

或者你发送一个广播(通常将在XXX255为目标),看看谁的答案。 请参阅数据报广播和多点传送 。 但我认为这不是TCP / IP了。



Answer 2:

多播UDP是这样做的一个很好的方式。 它的一对夫妇的支持在本地IP网络(UPnP和ZeroConf的)网络设备的自动发现技术的使用。

组播UDP不是TCP,但它仍是基于IP和,因此,使用相同的寻址机制,即IP地址。 经常它是相对于无线电广播即多播发送器仅需要发送1个消息(即它像一个广播),但只有那些“调谐”到多播信道将接收它的客户端。

你可以在谷歌或维基百科对这些作为首发快速搜索,但基本思路如下:

  • 客户机启动时,它发出一个多播UDP“你好”消息给一些预先指定的多播地址和端口(例如通用即插即用使用239.255.255.250:1900)
  • 现有的客户端监听传入的多播“你好”指定的地址和端口信息 - 当一个客户端接收一个时,它发送到发送器的响应
  • 客户机发送所述的“hello”消息接收从各现有的客户机在网络上的响应,并且是现在知道每个客户端的IP地址的

如果您正在寻找库使用,UPnP的图书馆可往往是有点重量级和很多民间的一般不喜欢他们,所以ZeroConf的可能是一个小更适合。 我不知道这样的事情任何Java实现的,但我敢肯定,你可以找到一些与周围小挖。



Answer 3:

网络扫描可能会很长,甚至更长的无线网络。 如果您需要迅速他们通Java中,你可以实现你的网络上的“交汇点”服务器。 该服务器监听到一个预定义的端口,客户注册在启动时在服务器上,该服务器可以分发关于请求的客户端的信息。

HTH。



Answer 4:

有一个JGroups的工具包,可靠的多播通信。 它允许使用多播技术在其他的答案中描述其他客户端的自动发现。

它还提供了对多播套接字之上通信的API。

它是在一些项目,比如JBoss,Tomcat和更多的用于提供分布式缓存的基础设施。 查看更多在这里 。



文章来源: Discovering clients on a wifi network