gpt4 book ai didi

java - 尝试使用 Socket 测试本地主机端口上的连接并获取 ConnectException

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:52 24 4
gpt4 key购买 nike

我正在编写一个简单的测试 Java 程序,使用 Socket 来测试本地计算机上的 TCP 服务可用的端口。这是我的代码:

for (int i = 0; i < 1024; i++) {
try {
//test availability
InetAddress addr = InetAddress.getLocalHost();
Socket s = new Socket(addr, i);
System.out.println("There is a server on port " + i + "of localhost.");
} catch (IOException e){
e.printStackTrace();
break;
}
}

运行时我得到:

java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at main.PortScanner.main(PortScanner.java:19)

我是 Socket 新手。我是否需要启动 Socket 服务器来响应我的任务?或者我应该做什么来扫描我的端口?感谢您的回答。

最佳答案

您正在尝试建立到端口 0 的客户端连接,但这是不可能的。如果将服务器端套接字绑定(bind)到端口 0,系统将自动分配一个高于 1024 的空闲端口。因此服务器套接字永远不会监听端口 0。不幸的是我找不到关于此的文档。其他操作系统的行为可能有所不同。

您的第二个问题:如果端口上没有任何内容正在监听,那么您将收到连接异常。

关于java - 尝试使用 Socket 测试本地主机端口上的连接并获取 ConnectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214860/

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