Java 尝试与外部IP连接时,连接被拒绝

Java 尝试与外部IP连接时,连接被拒绝,java,networking,Java,Networking,我一直在做一个小的服务器/客户端项目,我遇到了一个阻碍我进步的小问题 我想我已经锁定了程序的核心(客户端和服务器),并使用localhost将两者连接起来,但当我尝试通过外部IP连接时,我遇到了一个异常: java.net.ConnectException: Connection refused java.net.PlainSocketImpl.socketConnect(Native Method) java.net.PlainSocketImpl.doConnect(PlainSocketI

我一直在做一个小的服务器/客户端项目,我遇到了一个阻碍我进步的小问题

我想我已经锁定了程序的核心(客户端和服务器),并使用
localhost
将两者连接起来,但当我尝试通过外部IP连接时,我遇到了一个异常:

java.net.ConnectException: Connection refused
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
java.net.Socket.connect(Socket.java:529)
java.net.Socket.connect(Socket.java:478)
java.net.Socket.<init>(Socket.java:375)
java.net.Socket.<init>(Socket.java:218)
networking.Client.run(Client.java:183)
java.lang.Thread.run(Thread.java:680)
我知道这些帖子有点乱,所以我把代码上传到Gist。如果有人想让我把它添加到这里,请告诉我,我会的

需要注意的一些事项:

  • MooConsole是我编写的一个库,它为导出的程序提供了一个控制台。我在客户端和服务器中都使用它来显示文本
  • MooCommands是我的另一个库,它表示可以从控制台运行的命令
  • SocketThread是一个处理新连接的类。这使服务器能够同时连接多个客户端。它扩展了
    java.lang.Thread
    。我不认为这是导致问题的原因,所以我不包括它,但如果有必要,我可以
  • 操作。DISCONNECT
    是表示断开连接的枚举常量

如果有人知道我做错了什么,或者我根本没有做什么,请告诉我,我将不胜感激。

我不是Mac方面的专家,但根据lsof的输出,您的程序似乎只绑定IPv6地址。它可以在本地主机上正常工作,但如果您尝试使用公共ip地址(并使用IPv4),则可能是问题的根源。至于端口号,在类UNIX操作系统上,您需要对1024以下的用户端口具有root访问权限。无论如何,您应该尝试在Mac上禁用IPv6,看看问题是否仍然存在。

防火墙?权限?Mac OS可能在提供的端口上主动拒绝连接。我在Windows上尝试了它,但也遇到了同样的问题。我不认为这是操作系统的问题。可能仍然是防火墙的问题。您是尝试从本地网络还是外部(从web/VPN)连接我尝试从我的计算机连接到我计算机上的服务器,从我的计算机连接到外部服务器,并让外部人员连接到我计算机上的服务器。没有一个奏效。如果是防火墙问题:我该如何解决?好的,那么,你是想从同一个内部本地网络上的PC连接,还是他们想从外部世界连接。您是否(暂时)禁用了防火墙?服务器是否允许您正在侦听的端口上的传入连接?
COMMAND     PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java      35423 MeshulamSilk   41u  IPv6 0xc949f3cdb29dfdcd      0t0  TCP *:63370 (LISTEN)
java      35423 MeshulamSilk   42u  IPv6 0xc949f3cdbbf1b96d      0t0  TCP [::1]:63992->[::1]:63991 (TIME_WAIT)