我想知道在什么其他情况下会从该行抛出此 (SocketException: Permission denied: connect) 错误
SocketAddress socketAddress = new InetSocketAddress("86.143.5.165", 6464);
// Set a 3s timeout
clientSocket.connect(socketAddress, 3000);
有一些与权限相关的 Android 问题,以及使用端口 < 1024 时。我在端口 6464 上运行一个简单的 java 客户端/服务器应用程序,并且我正在使用 java 1.6.0_32(在阅读了 Java 1.7.0_7 添加后IPv6 支持)。
我已将端口 80 转发到我的服务器(通过在浏览器中访问我的外部 IP 在客户端计算机上进行验证),并且端口 6464 也已打开。
为什么客户端会被拒绝连接?
编辑:尝试从服务器本身连接到服务器时,我最初确实收到了这个错误。(显然,我想这就像一部电话,因为你会听到一个忙碌的音调)。我有一个朋友测试它,他可以连接。我现在从不在 LAN 上的笔记本电脑连接(即使用 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