
[英]Java servlet app worked on my pc local but not working on my server development
[英]Server java app not working on a local connection
大家好,家里有一个运行服务器Java应用程序的树莓派pi,它与配置了动态DNS并打开了输入/输出通信端口的路由器连接。 当我运行android apication客户端througt 4g时,一切都工作成功。 但是,当我在运行服务器的本地网络上运行连接到wifi的同一应用程序时,服务器应用程序看起来像死机了。 有任何想法吗?
谢谢。
我认为问题与您的DNS有关。 如果使用wifi连接,则必须返回本地IP地址。 您是否有机会将路由器配置为为wifi客户端返回树莓派本地IP地址? 在这里看看: 链接
一个简单的解决方案,即使它不是很好,也可以在代码中添加以下条件:
(重复直到连接成功)
您还可以标识您的测试设备(使用Settings.Secure.ANDROID_ID或IMEI),并仅将本地IP用于它们。 另一个选择是使URL可配置(例如,带有隐藏选项)。
由于我的应用程序可以在本地运行,因此只需要连接到服务器即可进行更新。 如果来自客户端和服务器的IP相等,我将阻止服务器应用程序上的连接。
目前,这是保持服务器应用正常运行的最佳解决方案。
URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new
InputStreamReader(whatismyip.openStream()));
String ip = in.readLine();
try {
SSLServerSocketFactory sslFactory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
SSLServerSocket ss = (SSLServerSocket) sslFactory.createServerSocket(PORT);
int idSession = 0;
while (true) {
SSLSocket socket = (SSLSocket)ss.accept();
if(socket.getInetAddress().getHostAddress().equals(ip)){
if (socket != null && !socket.isClosed()) {
socket.close();
}
}
((ServidorThread) new ServidorThread(socket, idSession)).start();
idSession++;
}
} catch (IOException ex) {
ex.printStackTrace(System.out);
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.