当前位置: 首页 > 面试题库 >

Sockets:使用Java发现端口可用性

隗新霁
2023-03-14
问题内容

如何使用Java以编程方式确定给定计算机中端口的可用性?

即给定一个端口号,确定它是否已经被使用?


问题答案:

这是实现从Apache来骆驼项目:

/**
 * Checks to see if a specific port is available.
 *
 * @param port the port to check for availability
 */
public static boolean available(int port) {
    if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
        throw new IllegalArgumentException("Invalid start port: " + port);
    }

    ServerSocket ss = null;
    DatagramSocket ds = null;
    try {
        ss = new ServerSocket(port);
        ss.setReuseAddress(true);
        ds = new DatagramSocket(port);
        ds.setReuseAddress(true);
        return true;
    } catch (IOException e) {
    } finally {
        if (ds != null) {
            ds.close();
        }

        if (ss != null) {
            try {
                ss.close();
            } catch (IOException e) {
                /* should not be thrown */
            }
        }
    }

    return false;
}

他们也在检查DatagramSocket,以检查该端口在UDP和TCP中是否可用。



 类似资料:
  • 问题内容: 我已经构建了一个打开ServerSocket的简单应用程序,并在连接时将其自身连接到远程计算机上的另一个服务器套接字。为了实现端口转发,我使用了两个线程,一个线程从本地输入流读取并向远程套接字输出流读取流,反之亦然。 该实现感觉有点差劲,所以我问您是否知道更好的实现策略,或者是否有一些代码可以以高效的方式实现。 PS:我知道我可以在Linux上使用IPTables,但是必须在Windo

  • 问题内容: 我正在尝试制作一个使用 Redis* 作为后端的 Java应用程序 。由于 Redis 是一个非常快速的键值存储,我想使用它,但是 redis 可以与1个客户端一起使用,因此它没有user:pass身份验证的选项。我想找到一种实现某种身份验证的方法,因此我尝试了带有 redis2 扩展名的 nginx 。我这样做是因为我可以使用 客户端证书 和HTTPS。但这使我的应用程序非常慢。 *

  • Java Sockets is a class library implementing a subset of the C++ Sockets library, and is based on SUN's java.nio.* non-blocking network i/o classes. 示例代码 public class MySocket extends TcpSocket { pub

  • 本文向大家介绍Mac中使用Nginx实现80端口转发8080端口,包括了Mac中使用Nginx实现80端口转发8080端口的使用技巧和注意事项,需要的朋友参考一下 由于项目本身的原因,开发必须使用80端口实现,而在Unix内核中非Root用户无法直接使用1024以下的端口,最初作者找到了pfctl的方式实现80端口转发到8080端口实现访问,经过亲测出现了最为严重的问题,按照当时的方法配置好之后发

  • 问题内容: 我正在学习Scala,并好奇是否有可能: 创建一个在Scala中实现Java接口的对象 将对象编译成类文件并将其打包 使用Java中的对象 我想在Scala中实现自定义Lucene查询解析器,并能够让其他人从Java应用程序访问它。 问题答案: 我假设“对象”实际上是“类”。无论如何,答案是肯定的,您可以这样做。如果您希望所有这些都在同一项目中,则需要利用Scala / Java联合编

  • 我需要连接到MongoDB通过SSH隧道和JSch端口转发抛出一个错误: 无法绑定本地端口127.0.0.1:27017 我必须通过SSH隧道连接到MongoDB。我在stackoverflow上找到了代码,它解决了我的问题。但几周后,同样的代码停止了工作。我无法确定原因。此外,使用我在Java代码中使用的相同凭据,我还尝试使用SSH-L命令通过CMD连接到相同的凭据,并且工作正常。我还可以使用N