【问题标题】:How connect two pc over two different wifi with java socket?java - 如何使用java套接字通过两个不同的wifi连接两台电脑?
【发布时间】:2020-04-16 22:29:43
【问题描述】:

我用 Java 创建了一个带有套接字的服务器和一个连接到服务器的客户端。这适用于同一个wifi上的两台电脑,我怎样才能让它在两个不同的wifi上工作(两台电脑在两个不同的房子里)? 附言对不起,我的英语不好。

【问题讨论】:

  • 获取公网IP地址。

标签: java sockets server client wifi


【解决方案1】:

您必须公开让您的服务器可用,以便能够与其他客户端建立连接(从其他 wifi 网络连接)

一种可能的解决方案是使用ngrok,这样可以将您的本地服务器映射到可公开访问的网址。该服务器绝对 免费可以使用,我个人多次使用它公开暴露我的本地服务器。

编辑 1 -

假设您的套接字服务器在端口 6666 上运行,您需要运行以下命令 -

./ngrok tcp 6666

这将导致以下响应

Session Status                online                                                                                                                        
Account                       ********@gmail.com (Plan: Free)                                                                                              
Version                       2.3.35                                                                                                                        
Region                        United States (us)                                                                                                            
Web Interface                 http://127.0.0.1:4040                                                                                                         
Forwarding                    tcp://0.tcp.ngrok.io:15341 -> localhost:6666                                                                                  

Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                   
                              0       0       0.00    0.00    0.00    0.00

在此之后,您将能够使用来自其他 java 客户端的以下命令连接您的服务器 -

socket = new Socket("0.tcp.ngrok.io", 15341);

【讨论】:

  • 对不起,我需要帮助,我下载了 ngrok,并使用 CMD 启动它,使用命令 ngrok http,在端口 80 上,我从 XAMPP 激活了 apache,但我不知道如何使用 ngrok在java程序上,对于连接我使用 Socket socket=new Socket("localhost",port);在我使用 6789 端口的 java 程序中,我尝试编写 abcdef.ngrok.io 而不是 localhost 但连接失败,在我尝试将 80 替换为 6789 但服务器一启动它就结束了。有什么建议吗?
  • 您需要为套接字连接映射 TCP 协议,对于您的用例,它看起来像 ./ngrok tcp 6789,之后它会给你类似 tcp://url:port 的东西。使用这个 urlport 而不是 localhost 和你的端口。我对其进行了测试,我能够使用 new Socket("0.tcp.ngrok.io", 16261) 连接它,其中 0.tcp.ngrok.io16261 是 ngrok 提供的 url 和 port。如果您仍然遇到问题,请测试并告诉我。
  • 非常感谢,我认为它有效,我在同一个 wifi 上尝试过,它有效,一旦我有机会尝试两个不同的 wifi,我会告诉你,再次感谢没有你要花几个月的时间来解决这种情况
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2012-07-07
  • 2021-02-25
相关资源
最近更新 更多