gpt4 book ai didi

java - 在Java中,我如何知道主机上的某个端口是否打开?(除了如果可能的话使用套接字)

转载 作者:行者123 更新时间:2023-12-01 19:17:46 26 4
gpt4 key购买 nike

新生,无论是这里还是Java我知道这样的代码:

Socket clientSocket=null;

try
{
clientSocket=new Socket(192.168.2.3,1111);
System.out.println("port open");
clientSocket.close();
}
catch(Exception e)
{
System.out.println("port closed");
}

可以用来测试某个端口是否开放(这里是192.168.2.3上的1111端口),只是徘徊还有其他方法吗?也许不使用socket()?

最佳答案

简单一点:是的,建立连接是探测开放端口的正确方法,如果您找到其他方法,它将在幕后使用 socket() 。

整个问题的复杂性来自于这样一个事实:“开放端口”是每本安全书籍中的头号嫌疑对象。系统管理员使用一系列技巧来对抗所谓的“端口扫描”。这包括向任何行为类似于端口扫描程序(即:建立连接并断开连接而不发送任何数据)的软件报告“误报”(声称端口已打开,但实际上并未打开)。

所以实际上最好的方法是建立连接,发送请求并处理响应。在某些网络/主机/安全配置下,所有其他方法都可能失败,让您的用户感到困惑,为什么他的应用程序声称连接没有问题时却无法工作。

关于java - 在Java中,我如何知道主机上的某个端口是否打开?(除了如果可能的话使用套接字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com