大家好,我一直在爲此苦苦掙扎了一段時間,找不到解決方案。創建TCP套接字時無法識別Android主機名
在java中此代碼的工作:
InetAddress serverAddr = InetAddress.getByName("myservice.local");
Socket socket = new Socket(serverAddr, PoolServerAddress.DEFAULT_PORT);
在Android中同樣不起作用。我試圖消除「本地」,並在清單中添加所有必要permsissions:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
我也試圖加入組播鎖bfore執行該代碼,但沒有辦法解決這個問題。
我得到以下異常:
06-03 13:18:14.438: W/System.err(31636): java.net.UnknownHostException: Unable to
resolve host <server_name>: No address associated with hostname
06-03 13:18:14.438: W/System.err(31636): at
java.net.InetAddress.lookupHostByName(InetAddress.java:434)
06-03 13:18:14.438: W/System.err(31636): at
java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
06-03 13:18:14.438: W/System.err(31636): at
java.net.InetAddress.getByName(InetAddress.java:292)
06-03 13:18:14.438: W/System.err(31636): at
com.example.jelly_test.MainActivity.connect(MainActivity.java:113)
06-03 13:18:14.438: W/System.err(31636): at
com.example.jelly_test.MainActivity$ResolvingThread.run(MainActivity.java:71)
06-03 13:18:14.438: W/System.err(31636): Caused by: libcore.io.GaiException:
getaddrinfo
failed: EAI_NODATA (No address associated with hostname)
06-03 13:18:14.438: W/System.err(31636): at libcore.io.Posix.getaddrinfo(Native
Method)
06-03 13:18:14.438: W/System.err(31636): at
libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
06-03 13:18:14.438: W/System.err(31636): at
java.net.InetAddress.lookupHostByName(InetAddress.java:415)
06-03 13:18:14.438: W/System.err(31636): ... 4 mor
如果我提供IP的服務,而不是它的工作原理,但我需要能夠提供的名稱。 此外,我已經嘗試添加JmDNS解析名稱到IP但它是緩慢的,只能在辦公室的內部服務,但我們的一些服務是外部的網絡,但他們仍然可以訪問與Java版本,但不是機器人。 還有什麼我可以嘗試嗎?非常感謝,因爲我正在用盡想法....!
編輯: 我想我的問題是由於一個事實,即有在Android上bug,它僅接受FQDN如: myservice.company.com
您是否找到解決方案?如果可以,請把它張貼在這裏?我遇到了同樣的問題... –
我已經寫了答案,對不起沒有找到明確的解決方法 – vallllll