回答
我想你需要在你的子网上的所有IP上扫描应用程序的端口。
什么是可用的IP - 或者你的子网是什么?
由于网络设计为对您的应用程序透明,因此恐怕无法确定这可能是不可能的。
所以,我会用蛮力:选择你的IP并改变最后一个字节。可能太多了,但可能还不够。
或者您发送广播(通常将针对x.x.x.255)并查看谁的答案。 见Datagram Broadcasting和Multicasts。但我认为这不再是TCP/IP。
不。这是一个非常糟糕的方法。多播是要走的路:广播对于新业务来说不被认为是可以接受的。当然,它仍然是IP,但你说的TCP只是单播。请参阅mDNS或SSDP在网络上执行服务发现。 – 2012-06-02 15:44:41
网络扫描可能很长,在无线网络上甚至更长。如果您需要通过Java快速访问它们,则可以在网络上实施“会议点”服务器。此服务器侦听预定义的端口,客户端在启动时在服务器上注册,服务器可根据请求分发有关客户端的信息。
HTH。
多播UDP是一个很好的方法。它用于支持通过本地IP网络(UPnP和ZeroConf)自动发现网络设备的两种技术。
组播UDP不是TCP,但它仍然基于IP,所以使用相同的寻址机制,即IP地址。通常将其与无线电广播进行比较,即多播发送者只需发送1条消息(即,它就像广播),但只有“调入”到多播信道的客户端才会接收到它。
你可以在谷歌或维基百科对这些作为首发快速搜索,但基本思路如下:
- 客户端启动时,它会发出多播UDP“你好”消息某些预先指定的多播地址和端口(例如UPnP使用239.255.255.250:1900)
- 现有客户端正在侦听指定地址和端口上的传入多播“hello”消息 - 当客户端收到一个消息时,它会向发送者
- 发送“hello”消息的客户端从n上的每个现有客户端接收响应etwork,现在知道
如果您正在寻找库使用,UPnP的图书馆可往往是有点重量级和很多民间的一般不喜欢他们,每个客户端的IP地址,所以ZeroConf的可能会更适合。我不知道这些东西的Java实现,但我相信你可以找到一些有点挖掘。
非常好的答案。要在mDNS和SSDP之间进行选择,就发送数据包数而言,mDNS实际上比SSDP更重;两者都有类似的发现模式;操作系统通常有一个mDNS守护进程,您可以将其挂接到(Bonjour或Avahi),而对于SSDP,您更有可能不得不推出自己的应用(Windows上除外)。 – 2012-06-02 15:48:31
- 1. 跨WiFi /域网络的客户端/服务器对等发现
- 2. Cocoa中的并发网络客户端
- 3. 客户端网络服务
- 4. iphone网络客户端
- 5. 如何有效地ping和发现网络上的所有客户端?
- 6. 如何在网络客户端上从网络服务器上创建文件
- 7. 的getUser不从GitHub上的网络聊天客户端4.0.4主网络聊天客户端
- 8. Android上的Wifi网络?
- 9. 上连接到WiFi网络
- 10. 网络套接字,最大客户端?
- 11. 客户端 - 服务器网络入门
- 12. 网络(http客户端)的boost asio库
- 13. Axis网络服务客户端错误
- 14. 瘦客户端和网络编程
- 15. Arduino网络客户端类不工作
- 16. SFML网络服务器/客户端
- 17. 混合网络/客户端框架
- 18. Unity3D网络客户端拍摄循环
- 19. 分布式网络多个客户端
- 20. Java网络 - 客户端和服务器
- 21. Python网络客户端编程库
- 22. 网络TCP客户端连接
- 23. 作为网络客户端的wxPython GUI
- 24. 单声道和Microsoft.Http网络客户端
- 25. 在Android p2p客户端之间发送消息wifi-direct
- 26. 在iPad上检测wifi网络变化
- 27. 在Android上实现WebDAV客户端
- 28. 提升Asio问题,服务器端客户端,在真实网络上缓慢?
- 29. 无法从客户端连接到网络上的方法asp.net
- 30. Java:如何让客户端检测网络上的服务器?
作为一个旁注,我可能会使用tcp连接到客户端,但我并不意味着我需要使用tcp来查找客户端 我还预计最终目标机器将处于通常的192.168.1.1类型主页网络,但我不会奢望假设这将成为我的网络,因此设置预定义的联系人服务器不是一种选择 – 2009-07-21 13:42:33