我书面方式一个Java应用程序,我需要快速发现任何有线或无线局域网其他任何版本的客户端,以建立一个TCP连接。
什么是这样做的最佳方式? 有没有会做这个库或代码片段?
我书面方式一个Java应用程序,我需要快速发现任何有线或无线局域网其他任何版本的客户端,以建立一个TCP连接。
什么是这样做的最佳方式? 有没有会做这个库或代码片段?
我猜你需要做你的应用程序的端口扫描在您的子网中的所有IP地址。
究竟什么是可用IP - 或什么是你的子网是怎么回事?
我怕确定可能变成是不可能的,因为网络的设计是透明的应用程序。
所以,我会用蛮力:选择你的IP和改变的最后一个字节。 也许是太多了,可能是不够的,虽然。
或者你发送一个广播(通常将在XXX255为目标),看看谁的答案。 请参阅数据报广播和多点传送 。 但我认为这不是TCP / IP了。
多播UDP是这样做的一个很好的方式。 它的一对夫妇的支持在本地IP网络(UPnP和ZeroConf的)网络设备的自动发现技术的使用。
组播UDP不是TCP,但它仍是基于IP和,因此,使用相同的寻址机制,即IP地址。 经常它是相对于无线电广播即多播发送器仅需要发送1个消息(即它像一个广播),但只有那些“调谐”到多播信道将接收它的客户端。
你可以在谷歌或维基百科对这些作为首发快速搜索,但基本思路如下:
如果您正在寻找库使用,UPnP的图书馆可往往是有点重量级和很多民间的一般不喜欢他们,所以ZeroConf的可能是一个小更适合。 我不知道这样的事情任何Java实现的,但我敢肯定,你可以找到一些与周围小挖。
网络扫描可能会很长,甚至更长的无线网络。 如果您需要迅速他们通Java中,你可以实现你的网络上的“交汇点”服务器。 该服务器监听到一个预定义的端口,客户注册在启动时在服务器上,该服务器可以分发关于请求的客户端的信息。
HTH。
有一个JGroups的工具包,可靠的多播通信。 它允许使用多播技术在其他的答案中描述其他客户端的自动发现。
它还提供了对多播套接字之上通信的API。
它是在一些项目,比如JBoss,Tomcat和更多的用于提供分布式缓存的基础设施。 查看更多在这里 。