服务器Java应用程序不适用于本地连接

时间:2018-07-08 09:30:23

标签: java dynamic dns raspberry-pi serversocket

嗨,他在家中有一台运行服务器Java应用程序的树莓派pi,该服务器已通过配置了动态DNS并打开了输入/输出通信端口连接到路由器。 当我运行android apication客户端througt 4g时,一切都工作成功。但是,当我在运行服务器的本地网络上运行连接到wifi的同一应用程序时,服务器应用程序看起来像死机了。 有什么想法吗?

谢谢。

router config

3 个答案:

答案 0 :(得分:0)

我认为问题与您的DNS有关。如果使用wifi连接,则必须返回本地IP地址。您是否有机会将路由器配置为为wifi客户端返回树莓派本地IP地址? 在这里看看:link

答案 1 :(得分:0)

一个简单的解决方案,即使它不是很好,也可以在代码中添加以下条件:

  • 如果连接到Dyn DNS时出错,请尝试连接到本地IP地址。 (如果您在Wifi局域网中)
  • 如果本地IP地址失败,请重试您的Dyn DNS(如果该用户是真正的用户,但确实存在通信问题)

(重复直到连接成功)

您还可以标识您的测试设备(使用Settings.Secure.ANDROID_ID或IMEI),并仅将本地IP用于它们。另一个选择是使URL可配置(例如,带有隐藏选项)。

答案 2 :(得分:0)

因为我的应用程序可以在本地运行,所以只需连接到服务器即可进行更新。如果来自客户端和服务器的IP相等,则我已阻止了服务器应用程序上的连接。

目前是保持服务器应用正常运行的最佳解决方案。

let traveler = [{"description":"Senior","Amount":50},{"description":"Senior","Amount":50},{"description":"Adult","Amount":75},{"description":"Child","Amount":35},{"description":"Infant","Amount":25}]

let result = traveler.reduce((c, v) => {
  c[v.description] = (c[v.description] || 0) + v.Amount;
  return c;
}, {});

console.log(result);