Java客户端 - 服务器应用程序仅适用于本地网络

时间:2015-07-27 23:47:22

标签: java android localhost

我制作了一个简单的java客户端 - 服务器应用程序,其中客户端(android mobile)向服务器(pc)发送消息,但是它们都连接到同一网络。如何通过互联网而不是localhost进行相同的服务?例如,在我的手机上使用3G。 我也试过使用我的公共IP,但它没有用。 我的服务器就是这样:

    import java.io.*;
    import java.net.*;
    import java.util.Scanner;

    public class PCServer {

        public static void main(String[] args) throws IOException {

        ServerSocket server = new ServerSocket(5000);

        Socket client = server.accept();
        Scanner s = new Scanner(client.getInputStream());
        while (s.hasNextLine()) {
            System.out.println(s.nextLine());
        }

        s.close();
        server.close();
        client.close();     
        }
    }

2 个答案:

答案 0 :(得分:1)

要从网络外部访问本地主机,您必须做一些事情

  1. 在防火墙中:允许服务器侦听的端口上的传入连接。
  2. 在您的本地路由器中:将所有入站连接转发到具有相同端口的本地计算机的IP上。
  3. 将localhost替换为客户端应用程序中的公共IP。
  4. 注意:要使此解决方案可用,您应该拥有静态IP,以便您可以依赖它并在客户端应用程序中使用它。

答案 1 :(得分:1)

当您说出公共IP 时,我认为您指的是当您访问What is my ip等网站时桌面浏览器所表达的公共IP

这与Java或Android无关。

  • 您的ISP不会为您的PC(甚至您的路由器)提供公共IP。即使这样,它也会是NATed
  • 如果您希望能够这样做,那么您需要联系您的ISP以获取公共IP地址。通常它会是静态的但并非总是如此,你可能需要特别要求它。
  • 然后你必须配置自己的装备来处理和路由 向您的PC公开请求。

或者,你可以使用Heroku并称之为好。