【发布时间】:2020-11-07 02:10:33
【问题描述】:
我现在正在使用代码https://cs.lmu.edu/~ray/notes/javanetexamples/#chat。 在行中
var client = new ChatClient(args[0]);
您将主机名传递给构造函数。
我仍然收到“ConnectException:连接被拒绝”,试图通过 Internet(使用我的公共 IP)作为客户端连接到我的服务器,而我可以在本地连接到它(使用“localhost”)。我已经检查了防火墙、所有端口和服务器本身,但仍然得到它。 ping 我的 IP 有效,但连接被拒绝。
我是否可以作为客户端通过 Internet 从我的笔记本电脑连接到在我的笔记本电脑上运行的服务器?
痕迹:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:503)
at java.base/sun.nio.ch.Net.connect(Net.java:492)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:648)
at java.base/java.net.Socket.connect(Socket.java:597)
at java.base/java.net.Socket.<init>(Socket.java:520)
at java.base/java.net.Socket.<init>(Socket.java:294)
at ChatClient.run(ChatClient.java:71)
at ChatClient.main(ChatClient.java:97)
因此,调用client.run() 尝试在传递的 IP 地址处打开套接字时会发生异常
var socket = new Socket(serverAddress, 50000);
我同时使用 50000 端口。
【问题讨论】:
-
您没有提供太多信息。该错误告诉您没有人在目标 IP/端口上监听。您能否提供一个跟踪,以便我们可以与您指向的代码进行比较?另请参阅此答案stackoverflow.com/a/6876306/6708879
-
我不确定工作流程:可能服务器在“127.0.0.1”处自动启动,因此尝试通过公共 IP 访问它没有成功。但这就是问题的原因-我试图找出一个问题:)是的,我已经浏览了您链接的帖子。它没有帮助,所以我在一个具体的例子中发布了这个问题。
-
当你不给它一个 ip 时它会监听所有的接口,所以这应该不是问题(你可以给它 ip 0.0.0.0 来监听所有的接口)。可以用本地ip连接吗? (127.0.0.1 或您的网络之一)。您是否已将客户端和服务器添加到防火墙?这可能会阻止请求。通常,如果您可以 ping 一台机器但其他软件无法正常工作,请始终检查防火墙。要进行快速测试,只需将其关闭,如果它开始工作,请将程序添加到其中。