0

我有一个需要更新 Java Servlet 中的一些数据的 java 类。当我在家庭网络中使用 IP 或者即使我使用我的 ISP ip(从路由器进行转发)时,它也可以正常工作。

但是现在,当我想使用实际上与我的 ISP 地址相同的动态 DNS 更新 servlet 时,它不起作用。

奇怪的是,我可以使用动态 DNS 从 servlet 获取数据。

这是我的代码:(我只是盯着 ip 和 DDNS 地址)注意:动态 DNS(在代码中:http ://example.zapto.org )与盯着的 ip(在代码中:http:// xx.xxx.xxx.xxx:8084)。使用 IP 时,DDNS 不工作。

public class SendGsonToServlet {
public static boolean sendGson (String qrCode){

    try {
        String jsonStr = new Gson().toJson(qrCode);

//          URL servletURL = new URL("http://example.zapto.org/Android_Server/data");
            URL servletURL = new URL("http://xx.xxx.xxx.xxx:8084/Android_Server/data");
//          URL servletURL = new URL("http://192.168.1.108:8084/Android_Server/data");

        // assumes protocol is http, could be https
        HttpURLConnection conn = (HttpURLConnection)servletURL.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");

        PrintWriter out = new PrintWriter(conn.getOutputStream());
        out.println(jsonStr);
//          out.flush();
        out.close();

        System.out.println(conn.getResponseCode());

    }catch (Exception e) {

    }

    return true;
}

}

谢谢大家,节日快乐:)

4

1 回答 1

0

如果 ping 为您提供了另一个 IP 地址,并且如果使用此 IP 地址您的测试失败,则可能是:

  • 或者您无法使用您的公共 IP 在您的 LAN 中访问您的服务;
  • 或者 DDNS 未通过 IP 评估;
  • 或者你的 ISP 没有给你一个公共 IP,它使用 NAT 到它的私有子网。
于 2012-04-07T01:39:41.143 回答