套接字服务器和套接字客户端java - 从位于不同计算机上的客户端检测服务器

时间:2016-08-21 14:00:19

标签: java sockets network-programming detection hostname

所以目前我通过IP地址连接到服务器端,但我希望它不需要指定服务器计算机的IP地址。无论如何,我只能检测到当前的serversocket在网络上打开并连接到来自客户端的那个?

这是我为服务器写的内容:

server = new ServerSocket(1234,100);

并在客户端:

connection = new Socket(InetAddress.getByName("someIpAddress"),1234);

2 个答案:

答案 0 :(得分:2)

如果服务器始终位于同一网络上,您始终可以使用UDP广播来检测服务。

服务器侦听广播,然后回复从而发送其IP地址。

如果服务器和客户端位于不同的网络上,中间至少有一台路由器,那么就无法检测到"来自客户端的服务器。

答案 1 :(得分:1)

  

我希望它不需要指定服务器的IP地址   电脑。无论如何,我只能检测到当前的serversocket是打开的   在网络上连接到客户端?

下面讨论两个方面:

  1. 如果您不了解给定网络中的服务器,那么检测服务器套接字在已知端口上运行是一项非常麻烦的任务。 Java SE没有力量自动确定哪个系统(在网络中)有一个服务器套接字侦听X端口。您需要第三方工具才能实现相同目标。您可以采用基于命中和审判的方法来确定。

  2. 另一点,如果您知道服务器的主机名(例如" someIpAddress.com"在您的代码中),那么在这种情况下,这一切都归结为一个主机名解析器,从传递的主机名获取IP地址。

    您可以在客户端的/ etc / hosts文件中找到有关服务器主机名和IP的映射。或者,您可以使用DNS服务器将您的请求重定向到IP,并让您连接到侦听X端口的服务器。