【发布时间】:2016-06-10 18:23:28
【问题描述】:
我在通过移动互联网连接 Android 手机和 Raspberry Pi 上的服务器时遇到问题。我在 RPi 上创建了简单的服务器,在 android 上创建了客户端。我还为 DNS 问题安装了 Weaved 软件。当我在另一台 PC 中使用简单客户端时,即 Eclipse,我可以使用即连接到服务器:
client = new Socket("proxy.11.xxx.net", 54812)
当我使用 WIFI 时,在 android 上也是如此。当我关闭 WIFI 时,问题就开始了。套接字不连接到服务器。我设置了权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
没有任何例外。套接字创建成功但未连接到服务器。
I.E 我放了
proxy.11.xxx.net:54812
到网络浏览器并输入,与服务器建立连接。 当然,当我通过 WIFI 在本地网络中并输入 RPi 的直接 IP 号时它可以工作,但这不是我的意思。我希望能够通过互联网从 android 连接。为什么我可以在PC上连接相同的地址而不能在android上连接?
任何人都可以提供帮助/提供建议吗?
编辑:
当我使用:new Socket (proxy.11.xxx.net,54812) 时,没有异常。套接字创建成功:http://imgur.com/pTHXaAE
当我使用new Socket(http://proxy.11.xxx.net,54812):
java.net.UnknownHostException: Unable to resolve host "http://proxy11.yoics.net": No address associated with hostname
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:457)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.InetAddress.getAllByName(InetAddress.java:215)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.Socket.tryAllAddresses(Socket.java:109)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.Socket.<init>(Socket.java:178)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.Socket.<init>(Socket.java:150)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at com.mmc.mateusz.rpilight.Client.openSocket(Client.java:50)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at com.mmc.mateusz.rpilight.Client.doInBackground(Client.java:76)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at com.mmc.mateusz.rpilight.Client.doInBackground(Client.java:30)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:292)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-10 22:03:46.576 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.lang.Thread.run(Thread.java:818)
06-10 22:03:46.577 29922-29944/com.mmc.mateusz.rpilight W/System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
06-10 22:03:46.577 29922-29944/com.mmc.mateusz.rpilight W/System.err: at libcore.io.Posix.android_getaddrinfo(Native Method)
06-10 22:03:46.577 29922-29944/com.mmc.mateusz.rpilight W/System.err: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
06-10 22:03:46.577 29922-29944/com.mmc.mateusz.rpilight W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
【问题讨论】:
-
socket无法连接时实际报错是什么?
-
这听起来像是网络问题,而不是编程问题。请尝试在ServerFault 上提问。
标签: java android sockets mobile hostname