【问题标题】:Cannot access simple server locally, but can access externally本地无法访问简单服务器,但外部可以访问
【发布时间】:2015-12-07 09:41:24
【问题描述】:

所以我正在学习制作一个安卓应用程序,并且需要一个服务器来获取信息。我创建了一个简单的服务器,它只在端口 65431 上侦听连接,一旦建立连接,只需写出一行文本。

问题是,我可以从外部网络测试服务器,一切正常,但是,当我从本地网络测试它时,它就不行了。

我所说的本地网络:

  1. Macbook IP 192.168.5.111 上的服务器(不是 DHCP,由路由器静态分配)
  2. 拥有来自 ISP 的静态 IP
  3. 尝试从连接到家庭 Wifi IP 192.168.5.101 的手机测试服务器
  4. 在测试本地主机时,它可以工作,但不能用于静态 IP

当我通过手机进行测试时,没有建立连接。有什么想法吗?

【问题讨论】:

    标签: java networking server


    【解决方案1】:

    您的服务器将绑定到您提到的静态 IP。将服务器设置为在 IP 0.0.0.0 上运行,一切就绪。

    在服务器上使用以下命令测试访问:

    telnet <ip-address> <port>

    【讨论】:

    • 我不太明白为什么绑定到 0.0.0.0 会解决这个问题。这对服务器来说是否安全?
    • 绑定到 0.0.0.0 只是意味着绑定到为当前机器配置的所有网络接口/ip。 MySQL 服务器默认为 0.0.0.0 ip 绑定,如本文档所述:dev.mysql.com/doc/refman/5.1/en/…
    • 哦,好的。那么我该如何做这个绑定呢?我试过: ServerSocket server = new ServerSocket (65431, 10, InetAddress.getByName("0.0.0.0"));但这不起作用。
    • 试试这个链接中提到的方式:dzone.com/articles/java-testing-socket-listening 参考结尾部分:ServerSocket serverSocket = new ServerSocket(port, 50, InetAddress.getByAddress(new byte[] {0x00,0x00,0x00, 0x00}));
    • 似乎也不起作用。我想知道问题是否在于路由器的连接失败。我实际上是在尝试与自己建立 TCP 连接。
    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多