Java套接字编程:连接被拒绝异常

huangapple 未分类评论47阅读模式
英文:

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(&quot;localhost&quot;,4);
		System.out.println(&quot;Connected to &quot; + 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.&lt;init&gt;(Socket.java:434)
at java.net.Socket.&lt;init&gt;(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 &lt; 65535; port++) {
    try {
        ... try connecting to port ...
    } catch (java.net.ConnectException ex) {
        System.out.println(&quot;Nothing on port &quot; + port);
    }
    ... handle other errors ...
}

huangapple
  • 本文由 发表于 2020年7月25日 19:29:39
  • 转载请务必保留本文链接:https://java.coder-hub.com/63087794.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定