【发布时间】:2011-01-26 09:57:35
【问题描述】:
我正在尝试在 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 和/或端口有错误?但是谁能指出我正确的方向可能是什么原因?
【问题讨论】:
-
你能不能先telnet到地址和端口号看看会发生什么。它也可能是您正在连接的实际计算机。
-
我正在实际的 Android 设备上尝试这个,所以我不确定 telnet 会有多大帮助?
-
这可能是个愚蠢的问题,但您设备上的 8008 端口是否有监听?
-
无论我尝试什么端口,我都会拒绝连接 :)
-
对,我想我的意思是如果没有其他程序在端口 8008 上侦听,那么您将无法连接。您是否尝试接受传入请求或连接到另一个程序?
标签: java android sockets ip-address