所以目前我通过IP地址连接到服务器端,但我希望它不需要指定服务器计算机的IP地址。无论如何,我只能检测到当前的serversocket在网络上打开并连接到来自客户端的那个?
这是我为服务器写的内容:
server = new ServerSocket(1234,100);
并在客户端:
connection = new Socket(InetAddress.getByName("someIpAddress"),1234);
答案 0 :(得分:2)
如果服务器始终位于同一网络上,您始终可以使用UDP广播来检测服务。
服务器侦听广播,然后回复从而发送其IP地址。
如果服务器和客户端位于不同的网络上,中间至少有一台路由器,那么就无法检测到"来自客户端的服务器。
答案 1 :(得分:1)
我希望它不需要指定服务器的IP地址 电脑。无论如何,我只能检测到当前的serversocket是打开的 在网络上连接到客户端?
下面讨论两个方面:
如果您不了解给定网络中的服务器,那么检测服务器套接字在已知端口上运行是一项非常麻烦的任务。 Java SE没有力量自动确定哪个系统(在网络中)有一个服务器套接字侦听X端口。您需要第三方工具才能实现相同目标。您可以采用基于命中和审判的方法来确定。
另一点,如果您知道服务器的主机名(例如" someIpAddress.com"在您的代码中),那么在这种情况下,这一切都归结为一个主机名解析器,从传递的主机名获取IP地址。
您可以在客户端的/ etc / hosts文件中找到有关服务器主机名和IP的映射。或者,您可以使用DNS服务器将您的请求重定向到IP,并让您连接到侦听X端口的服务器。