Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使MySQL与非本地连接(移动数据等)一起工作_Java_Android_Mysql_Database_Xampp - Fatal编程技术网

Java 使MySQL与非本地连接(移动数据等)一起工作

Java 使MySQL与非本地连接(移动数据等)一起工作,java,android,mysql,database,xampp,Java,Android,Mysql,Database,Xampp,有没有一种方法可以让带有XAMPP的MySQL通过移动数据(Android应用程序)或PC应用程序在线连接,而不必使用相同的局域网连接 以下是运行XAMPP的PC的规格: 16GB内存 i7-8700 SSD-512GB 集成GPU 100MB互联网连接(光纤) 我要做的是连接到数据库,而不必使用与正在执行XAMPP的PC相同的连接,就像在加利福尼亚州打开Android应用程序,同时PC位于下加利福尼亚州。问题是,您的PC很可能位于路由器后面。路由器将多个私有IP地址映射到一个公共IP地址。

有没有一种方法可以让带有XAMPP的MySQL通过移动数据(Android应用程序)或PC应用程序在线连接,而不必使用相同的局域网连接

以下是运行XAMPP的PC的规格:

  • 16GB内存
  • i7-8700
  • SSD-512GB
  • 集成GPU
  • 100MB互联网连接(光纤)

我要做的是连接到数据库,而不必使用与正在执行XAMPP的PC相同的连接,就像在加利福尼亚州打开Android应用程序,同时PC位于下加利福尼亚州。问题是,您的PC很可能位于路由器后面。路由器将多个私有IP地址映射到一个公共IP地址。它是怎么做到的?它使用。在非常基本的术语中,当设备D1(例如,具有专用ip 192.168.1.10)位于路由器后面并且想要与公共设备D2通信时,它发送一个请求。请求被发送到路由器。路由器将公共IP地址和任意端口(例如12345)添加到数据包中。路由器保留一个表,其中包含与专用设备链接的所有端口(例如192.168.1.10->12345,…)。然后它使用D2的公共IP地址将数据包发送到D2。D2将响应发送回路由器公共IP。路由器使用端口号和表将数据包转发到专用设备,在这种情况下,设备为D1

因此,您无法从路由器外部直接与位于路由器后面的设备通信。但是,您可以使用。您可以告诉路由器始终将特定端口映射到特定的专用IP(您电脑的IP)。然后,你让另一台设备(你的Android应用程序)使用该端口与之通信

总之,如果我们有两个设备,A和B,A在路由器后面。如果A想要启动与B的连接,则:

  • 如果B在同一路由器后面,那么他们可以使用他们的专用IP地址

  • 如果B不在任何路由器后面,那么A可以使用B的公共IP地址与它通信,如上所示

  • 如果B在不同的路由器后面,那么肯定有某种类型的错误
可能会重复以下内容,请记住相应地转发您的MySQL端口(默认为3306)。但是,我会考虑这种糟糕的做法(即使你只限制某些DB用户到某些DBS等),因为你必须跟踪MySQL漏洞。我建议让你的移动应用程序与某种“后端”通信,然后“后端”访问数据库。虽然用户(和潜在攻击者)可以看到后端,但数据库不会。