[英]Android Socket connection refused
我試圖在Android上打開一個Socket但每次嘗試我都會不斷收到連接拒絕錯誤,無論我嘗試什么方式。
在我嘗試創建連接的以下代碼行中發生錯誤。
Socket socket = new Socket(getLocalIpAddressString(), 8008);
以下是我用來獲取本地ip地址的方法:
public static String getLocalIpAddressString() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("IPADDRESS", ex.toString());
}
return null;
}
而我得到的錯誤是:
WARN/System.err(3574): java.net.ConnectException: /192.168.2.163:8008 - Connection refused
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:237)
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:199)
WARN/System.err(3574): at java.net.Socket.startupSocket(Socket.java:734)
WARN/System.err(3574): at java.net.Socket.<init>(Socket.java:157)
WARN/System.err(3574): at com.networks.phone.engine.SIPEngine.rtpTest(SIPEngine.java:1444)
我認為我的Ipaddress和/或端口有錯誤? 但是,任何人都可以指出我可能是什么原因的正確方向?
由於設備上沒有防火牆,在其清單中聲明網絡權限的正確編碼的Android應用程序可以接受未成熟端口上的連接。
但是,許多wifi和大多數移動網絡都會將設備置於NAT和外部防火牆之后,因此入站連接嘗試可能永遠無法到達。
我在提示符中使用了ipconfig命令,然后使用“IPv4地址”連接到當前的PC。
我已經成功連接了服務器以及發送和接收的字節。
Android客戶端代碼:
s = new Socket("192.168.42.85",12345);
PC服務器端代碼:
socket = ss.accept();
InetAddress ia = socket.getInetAddress();
System.out.println("Client Address: " + ia.getHostAddress());
在我的情況下,我需要重定向端口,看看:
http://developer.android.com/guide/developing/tools/emulator.html#redirections
或者也許您也可以嘗試轉發端口。
從您的代碼中,我假設您正在嘗試從Android應用程序打開到同一Android設備的套接字連接。
基於Linux和所有,可能Android有某種防火牆或連接規則,阻止您的套接字成功連接。 查看文檔,它可能是Android配置問題而不是Java問題。
我有同樣的問題。 我不得不使用ServerSocket而不是Socket:
ServerSocket socket = new ServerSocker(8888);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.