英文:
Java Socket programming: Connection Refused Exception
问题
以下是已翻译的内容:
我得到了一个实践任务,我需要在本机上创建一个套接字连接,然后测试端口号从1到65535的连接。
以下是我目前所做的:
Socket sConnection = null;
try {
sConnection = new Socket("localhost", 4);
System.out.println("Connected to " + sConnection.getInetAddress());
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (sConnection != null) {
sConnection.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
现在的问题是,我不断收到连接异常:
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at Main.main(Main.java:9)
我已经禁用了防火墙和杀毒软件,我已经检查了所有可用的端口,并选择了一些处于监听和打开状态的端口,但仍然得到相同的错误。
英文:
I've been given a practical where I have to create a socket connection to the localhost of the machine and to test the connection for port numbers 1 to 65535.
Here's what I've done so far
Socket sConnection = null;
try {
sConnection = new Socket("localhost",4);
System.out.println("Connected to " + sConnection.getInetAddress());
}catch(UnknownHostException ex) {
ex.printStackTrace();
}catch(IOException ex) {
ex.printStackTrace();
}
finally {
try {
if(sConnection != null) {sConnection.close();}
}catch(IOException ex) {
ex.printStackTrace();
}
}
}
Now the problem is i keep getting a connection Exception
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at Main.main(Main.java:9)
I've disabled my antivirus and firewall, I've checked all available ports and selected a few that are listening and open but still getting the same error.
答案1
得分: 0
"Connection refused"的意思是在你尝试连接的端口上没有任何监听。当你扫描1至65535号端口时,大多数端口都会出现这种情况。这是一个提示,表明你应该继续尝试下一个端口。
举例说明:
for (int port = 1; port < 65535; port++) {
try {
... 尝试连接到端口 ...
} catch (java.net.ConnectException ex) {
System.out.println("端口 " + port + " 上没有任何服务");
}
... 处理其他错误 ...
}
英文:
"Connection refused" means there is nothing listening on the port you try to connect to. When you are scanning ports 1 to 65535, this is expected to happen with most ports. It's a sign that you should move on to the next port.
To illustrate:
for (int port = 1; port < 65535; port++) {
try {
... try connecting to port ...
} catch (java.net.ConnectException ex) {
System.out.println("Nothing on port " + port);
}
... handle other errors ...
}
专注分享java语言的经验与见解,让所有开发者获益!
评论