1

我们有一个软件应用程序,它具有客户端-服务器架构,并且只能在 LAN 上使用。因此,我们打算使用 Java Socket Programming 来实现这一点(基于明确定义的协议)。

我们有两种设置:服务器设置(将服务器设置为在端口上侦听请求的后台进程)和客户端设置。这两个都可以由用户手动调用,具体取决于他希望软件在该特定计算机上的行为方式。

现在,在服务器应用程序的情况下,在设置过程中,我们指定某些详细信息,例如端口号等......。所以,我们现在要做的是确保一旦该机器上的端口号固定,只要软件应用程序存在(并且不考虑服务器停机时间或正常运行时间),我们要确保没有其他第三方应用程序/产品使用该端口。

目前,有没有办法通过代码(Java)做到这一点?假设此应用程序不需要始终以管理员身份运行,因此可能没有访问 Windows 注册表的权限。

我希望我对问题陈述已经很清楚了。当然,如果需要任何澄清,请询问,我将尝试进一步解释。

期待有关解决此问题的建议。

4

3 回答 3

5

你根本不能...

当您的程序关闭时,任何其他程序都可以打开您的端口,并阻止您的程序在启动后使用它...

于 2012-07-18T12:55:22.370 回答
1

解决此问题的一种方法是使用服务发现。有很多方法可以实现这一点。

它们的共同点是能够通过名称或 id 查找服务并连接到它,而不管实际使用的端口如何。每次运行时可能会有所不同。这样,您的应用程序可以使用任何空闲端口,而无需保留端口(甚至只在一台主机上运行)

于 2012-07-18T13:03:37.077 回答
0

你可以试试https://github.com/ProfessorEugene/PortReserve (java 1.6+) - 完全公开,我是作者。

于 2015-03-24T01:30:43.593 回答