SocketException: Permission denied: connect

6
我想知道在什么其他情况下,这个错误(SocketException: Permission denied: connect)会从该行抛出。
SocketAddress socketAddress = new InetSocketAddress("86.143.5.165", 6464);
// Set a 3s timeout
clientSocket.connect(socketAddress, 3000);

与Android权限有关的问题与使用端口<1024有关。我正在运行一个简单的Java客户端/服务器应用程序,端口为6464,并且我正在使用Java 1.6.0_32(在阅读了Java 1.7.0_7添加ipv6支持后)。
我将端口80转发到我的服务器(通过在浏览器中输入我的外部IP地址来验证客户机上的端口),端口6464也是开放的。
为什么客户端会被拒绝连接?
编辑:当尝试从服务器本身连接到服务器时,我最初会收到此错误。(显然,我想这就像一个电话一样,你会得到占线的音调)。我让朋友进行了测试,他可以连接。现在我正在连接一台不在局域网上的笔记本电脑(即使用3g手机作为热点),但奇怪的是仍然出现错误。
编辑2:
java.net.SocketException: Permission denied: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at runtime.MyGame.main(MyGame.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
#### Java Web Start Error:
#### Socket failed to connect
5个回答

2

客户端没有被“拒绝连接”。它被本地操作系统拒绝了连接权限。

Java 1.4中添加了对IPv6的支持。


公正评论。我只是知道最近在Java 7上有IPv6的问题(因此该协议现已在服务器和客户端计算机上禁用;适配器已重新启动)。 - Hemmels
@Hemmels 在你的问题中发布完整的堆栈跟踪。 - user207421
@downvoter 很难看出您对这个答案的问题。实际上是不可能的。 - user207421

0
首先,提供'MyIpAsAString'和端口会很有用。无论如何,您确定服务器程序正在该IP和端口上运行吗?这通常是原因,或者是您接受连接的代码本身不正确。

那么,在这种情况下,也有可能是计算机有防火墙或类似的东西拒绝了外部请求。 - VoidWhisperer
将我的实际IP添加到问题中。 - Hemmels
@VoidWhisperer 我运行了一个动态DNS端口扫描器。"86.143.5.165:6464端口是开放的并且可以接受连接。这表明该端口没有被防火墙或您的ISP阻止,并且目前正在运行。" - Hemmels
@VoidWhisperer,这与“也”无关。这只是一个本地权限问题,与服务器是否正在运行无关。 - user207421

0
这与客户端的非常本地化的网络设置有关。其他客户端可以无问题连接,我认为可能与工作组或特定本地客户端防火墙有关。感谢大家。

0

我在断开连接Cisco AnyConnect VPN版本4.10.05111时遇到了这个异常。问题在下一次建立连接时得到解决。


0

对于那些与我有类似问题的人。

在运行Spock groovy测试时,我遇到了这个错误。从maven运行groovy测试失败,直接运行却没有问题。

要解决这个问题,请将maven-surefire-plugin配置为不分叉。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <forkMode>never</forkMode>
            </configuration>
        </plugin>

不确定为什么这样修复了问题 - 欢迎留言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接