如何公布服务器套接字信息?

时间:2016-11-02 18:18:44

标签: java sockets process

我在后台运行一个正在侦听端口的java进程。它每次启动进程时可能会更改它侦听的端口,但它假定进程将长期运行(尝试永久运行,并在其关闭时重新启动)。

我目前的方法是在套接字开始成功侦听后将套接字信息写入文件,连接到服务器套接字的API将读取此文件。所以我的问题是:

1。是否有更好的方法可以公开套接字信息?更好的意思是减少错误,更快或更清晰的代码。

2. 如果文件IO是可接受的方法,那么我应该注意哪些最佳做法可以最大限度地减少潜在问题。

2 个答案:

答案 0 :(得分:1)

如果您的所有潜在客户都可以访问该文件,那么文件I / O是可以的,但这看起来有点笨拙 - 如果您在Windows和基于Unix的操作系统中都有客户端会发生什么?您的客户端和服务器之间是否存在可能阻止他们访问此文件的防火墙?这不是不可能处理的,但如果您不想让该文件保持开放供全世界查看,您还必须考虑权限。

另一种方法可能是在UDP数据报中广播特定的端口/ IP,但是您必须使用特定的广播组来完成这项工作。

正如其他人所建议的那样,另一种选择可能是托管一项服务,该服务列出了客户端可能首先遇到的服务器IP /端口所在的位置。

答案 1 :(得分:0)

如果客户端将始终在localhost上运行,我猜一个文件就可以了。另一个选项可能是套接字文件。

另一方面,如果您的客户可以在网络上的任何位置,您可以:

  • 通过不改变的端口上的网络服务器提供上述文件
  • 使用服务发现工具,例如consul.io或任何其他等效工具。