【发布时间】:2014-04-22 08:54:54
【问题描述】:
我正在编写一个简单的测试 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 服务器来响应我的请求? 或者我应该怎么做才能扫描我的端口? 谢谢你的回答。
【问题讨论】:
-
查看link
-
感谢@yogx,我尝试以管理员身份运行它:java -Djava.net.preferIPv4Stack=true main.PortScanner,但仍然收到相同的错误消息。也就是说,“ConnectException:连接:地址在本地机器上无效,或者端口在远程机器上无效”对于第一次迭代和“ConnectException:连接被拒绝:连接”异常对于循环的其余部分。