Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查本地TCP端口在Java中未打开_Java_Tcp_Grizzly - Fatal编程技术网

检查本地TCP端口在Java中未打开

检查本地TCP端口在Java中未打开,java,tcp,grizzly,Java,Tcp,Grizzly,是否有一种简单的方法来确保本地端口尚未打开。某些TCP套接字服务器(如Grizzly)在默认情况下似乎不执行此检查。当此检查丢失时,服务器似乎启动并响应,但客户端代码只是连接到未关闭的旧服务器。这可能非常糟糕 是否有一行简单的Java代码可以检查端口是否已被其他进程使用?我看到了两种明显的方法: 尝试连接到本地主机上的该端口,如果您被接受,则该端口正在使用 尝试在该端口中以侦听模式打开ServerSocket。如果出现“已绑定”异常,则该端口正在使用中 希望有帮助。在这两者之间,可能最好尝试连接

是否有一种简单的方法来确保本地端口尚未打开。某些TCP套接字服务器(如Grizzly)在默认情况下似乎不执行此检查。当此检查丢失时,服务器似乎启动并响应,但客户端代码只是连接到未关闭的旧服务器。这可能非常糟糕


是否有一行简单的Java代码可以检查端口是否已被其他进程使用?

我看到了两种明显的方法:

  • 尝试连接到本地主机上的该端口,如果您被接受,则该端口正在使用
  • 尝试在该端口中以侦听模式打开ServerSocket。如果出现“已绑定”异常,则该端口正在使用中

  • 希望有帮助。

    在这两者之间,可能最好尝试连接——打开端口更有可能弹出用户防火墙,并警告“应用程序XYZ正在尝试侦听端口1234…”ServerSocket解决方案相当灵活。防火墙弹出窗口很好,因为程序无论如何都会在该端口上提供服务。感谢您的帮助。请注意:如果您尝试连接到某个端口但失败,可能是因为您连接到该端口时被防火墙阻止了。仅仅因为你不能连接并不意味着它没有被使用。@Shinny and New先生:是的。但他说的是本地端口,而不是远程端口。在这种情况下,如果使用“localhost”作为主机名确实打开了该端口,则无法连接到该端口的可能性很小。@Mark Rushakoff:最好不要尝试连接,因为这样会产生不可预知的结果。事实上,当你尝试连接时,你永远不会得到保证。因此,充其量您有一个指示,表明没有任何东西在运行,但唯一可以确保的方法是尝试绑定到端口,要么得到异常,要么成功。