使用动态 IP 的 Android/Java 客户端-服务器应用程序

发布于 2024-10-22 00:27:46 字数 216 浏览 4 评论 0原文

因此,我想创建一个 Android 应用程序,通过 Wi-Fi 将数据(在本例中为坐标)从我的 Android 设备发送到我的 MacBook 上的 Java 应用程序。 我想我会使用 TCP 套接字来完成这项工作,我的 Android 设备将充当客户端,而我的 MacBook 作为服务器。 我的问题是,实际上硬编码 IP 地址并不是理想的技术,有什么办法解决这个问题吗?使用套接字是制作此类应用程序的最佳方法吗?

So i want to create an Android application that would send data (in this case coordinates) from my Android device to a Java application on my MacBook via Wi-Fi.
I figured i would use TCP Sockets for the job, and my Android device would act as client while my MacBook as server.
My problem is that in reality hardcoding IP addresses is not the ideal techique for that, is there any way around this? Is using Sockets the best way to make an application like that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔一刀 2024-10-29 00:27:46

没有进入最好的方法,而是使用 动态 DNS 服务来代替静态 ips。

Not getting into the best way to do it, but instead of static ips use a Dynamic Dns Service.

七分※倦醒 2024-10-29 00:27:46

您可以使用动态 DNS。使用动态 DNS,客户端 (Macbook) 向 DNS 服务器注册其 IP 地址,然后通过正常的 DNS 请求将其提供给其他客户端 (Android)。

但是,我建议不要进行此设置(带有 DynDNS 的笔记本电脑上的服务器):

  1. 由于个人原因或网络连接原因,您的笔记本电脑可能并不总是可用。
  2. 网络地址转换 (NAT):大多数客户端网络(WLAN、家庭网络,甚至移动网络)都使用此技术,该技术可防止启动从互联网到内部网络的 TCP 连接(入站连接)。这可以通过端口转发来缓解,但这只能在您控制的网络上完成。

相反,我建议您使用虚拟专用服务器 (Linode) 或云解决方案。

或者,如果您不想设置/管理服务器,则可以使用现有的数据交换解决方案:电子邮件、twitter、xmpp 等。

You could use dynamic DNS. With dynamic DNS, client (Macbook) registers its IP address with DNS server, which than serves it to other clients (Android) via normal DNS requests.

However, I'd recommend against this setup (server on notebook with DynDNS):

  1. Your notebook might not be always available, due to personal reasons or network connectivity reasons.
  2. Network address translation (NAT): most client networks (wlan, home networks, even mobile networks) use this technology which prevents initiating TCP connections from internet to internal network (inbound connections). This can be alleviated via port forwarding, but this can only be done on networks that you control.

Instead I'd suggest that you use a virtual private server (Linode) or a cloud solution.

Alternatively, if you don't want to setup/manage a server, than you could use an existing data exchange solution: email, twitter, xmpp, etc..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文