2010-02-19 63 views
3

我有一台16台电脑的网络都连接到同一个交换机,没有连接到互联网。其中一台计算机上安装了一个小型Java应用程序以及BlazeDS服务器(也就是在端口上侦听消息)。如何通过封闭网络搜索特定计算机?

目前,其他15台“客户端”计算机必须手动输入java应用程序驻留的“服务器”IP。我的客户端应用程序是Adobe Air,因此我无法扫描服务器。

我正在考虑用Java或C++编写助手应用程序/实用程序。至少,这个应用程序可以显示IP给用户,然后可以将其输入到Air应用程序中;马虎,但比没有好。

我确定有一些工具可以解决这类问题。有任何想法吗?

+2

Zeroconf? http://en.wikipedia.org/wiki/Bonjour_(software) – 2010-02-19 23:00:25

+0

更多zeroconf信息:http://stackoverflow.com/questions/1233204/are-there-any-other-java-libraries-for-bonjour-zeroconf -apart-from-jmdns – Stephano 2010-02-19 23:38:53

回答

4

我会强烈建议使用零配置/卓悦的这个,因为它相当轻松处理分散“,其中是谁,我应该知道的人并应该知道我“?

在Java中完成此操作的最简单方法(完全在您自己的应用程序中)是使用jmdns项目。 http://jmdns.sourceforge.net/

+0

+1感谢关于jmdns的提示。找到这个以及:http://stackoverflow.com/questions/1233204/are-there-any-other-java-libraries-for-bonjour-zeroconf-apart-from-jmdns – Stephano 2010-02-19 23:35:57

1

总之,nmap。你可以告诉它来扫描网络块

$ nmap -P0 10.104.244.200 

Starting Nmap 4.20 (http://insecure.org) at 2010-02-19 18:02 Eastern Standard Time 
Interesting ports on BOSA638992.fmrco.com (10.104.244.200): 
Not shown: 1688 closed ports 
PORT  STATE SERVICE 
25/tcp open smtp 
80/tcp open http 
135/tcp open msrpc 
139/tcp open netbios-ssn 
371/tcp open clearcase 
443/tcp open https 
445/tcp open microsoft-ds 
2030/tcp open device2 
3389/tcp open ms-term-serv 
MAC Address: 00:17:A4:F3:6D:A7 (Global Data Services) 

Nmap finished: 1 IP address (1 host up) scanned in 1.750 seconds 

http://nmap.org/

+0

有趣。假设他们出去买一个新的交换机。他们可能会从10.0.0.x移动到192.168.0.x,对吧? – Stephano 2010-02-19 23:05:01

+0

嗯。你的意思是你的服务移动了,对吧?服务器是否有DNS名称?如果是这样的话。如果没有DNS,可能查询租用号码的DHCP服务器? – 2010-02-19 23:10:45

+0

啊,恐怕我是DNS和DHCP服务器。只是电脑和开关。我正在考虑zeroConf可能是去这里的路。 – Stephano 2010-02-19 23:19:40

1

的Adobe AIR 2.0(可作为测试版)具有与本机进程通信的能力。请参阅http://www.adobe.com/devnet/air/flex/quickstart/interacting_with_native_process.html

您可以使用此工具调用您编写并随应用程序一起提供的帮助程序。这个助手会使用一些发现你的服务器的方法。例如zeroConf Networking(被Apple称为Bonjour)。您的AIR应用程序会使用它从帮助程序接收的地址建立到服务器的连接。

+0

+1是的,我对此感到非常兴奋,其他2.0特性。然而,我正在寻找可以使用的东西,因为我们将在2.0之前发布。 – Stephano 2010-02-19 23:15:32

2

您可以为发送心跳线或测试消息的用户编写一个“发现”功能,以将其发送到当前计算机的同一子网中的所有IP地址,以查找正确接受/响应的服务器。

+0

这当然是我的第一个想法。我可以从子网底部开始工作。我只希望他们不太远。尽管如此,我认为zeroConf可能会更难一些,但更准确。 – Stephano 2010-02-19 23:33:35

+0

是的,它有点低科技,这一切都取决于你所在的子网的大小,但即使在你最多谈到253坪。但是你认为最好的解决方案可能是zeroConf或其他形式的DNS /命名服务器是正确的。 – lofte 2010-02-19 23:39:36