【发布时间】:2015-07-27 23:47:21
【问题描述】:
我制作了一个简单的 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();
}
}
【问题讨论】:
-
有很多服务可以为您托管您的应用程序。
-
长话短说,问题是由于路由器/防火墙设置,您的服务器在本地网络之外的网络中不可见。您可以配置您的设置、获取静态 IP 和获取 DNS(如果您想使用域名)以使您的服务器正常工作,但这对初学者来说很麻烦。 Amazon AWS 和 Heroku 提供易于使用的云服务,因此您不必担心这些配置和安全问题。