【问题标题】:Java TCP Socket on public [duplicate]公共上的Java TCP套接字[重复]
【发布时间】:2014-08-22 20:41:33
【问题描述】:

我写了一个服务器和客户端 Java TCP 套接字,它在私有网络(192.168.2.x)上工作,但我不知道如何使它与公共 IP 一起工作。我想我应该在路由器中打开一个端口并使用我的服务器 ip 和这个端口来初始化客户端套接字!我试过了,还是不行。

在这里初始化套接字:

Socket clientSocket = new Socket(IP, PORT);

ServerSocket server = new ServerSocket(PORT);

【问题讨论】:

    标签: java sockets networking tcp tcpsocket


    【解决方案1】:
    • “打开端口”通常在防火墙上完成 - 如果您使用防火墙,则应该这样做。
    • 此外,您需要路由器允许传入流量,这通常通过端口转发配置/NAT 部分来完成。
    • 最后但同样重要的是,您需要外部网络上的客户端指定路由器的面向外部的 IP,该 IP 地址不在the ranges reserved for private networks 中。 192.168.x.x 是为专用网络保留的范围,不是公共地址空间的一部分。它应该是不同的 IP 地址。

    您可以通过导航http://www.whatismyip.com/找到您的路由器的公共IP地址

    【讨论】:

    • - 抱歉,我用我的语言翻译了它,这就是我使用“打开端口”的原因,我认为创建具有指定端口的套接字,已经打开了端口,但我不确定。 - 我做了端口转发,但我不知道如何测试它?你能建议我一种测试方法吗? - 我使用了我的公共 ip,但它没有像上面所说的那样工作。
    【解决方案2】:

    您应该转到路由器中的 NAT 部分并启用端口转发,例如公共 ip:port 将 1.1.1.1:1 NAT 到本地 2.2.2.2:2,因此您在端口 2 上启动服务器并连接您的客户端到 1.1.1.1 端口 1。

    【讨论】:

    • 我像 pic 那样做。我没有工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2012-08-23
    • 2016-04-24
    • 2017-08-10
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多