Java Android套接字连接被拒绝
我试图在Android上打开一个套接字,但每次我尝试时,无论我用什么方式尝试,都会收到连接被拒绝的错误 错误发生在我尝试创建连接的下面代码行中Java Android套接字连接被拒绝,java,android,sockets,ip-address,Java,Android,Sockets,Ip Address,我试图在Android上打开一个套接字,但每次我尝试时,无论我用什么方式尝试,都会收到连接被拒绝的错误 错误发生在我尝试创建连接的下面代码行中 以下是我用来获取本地ip地址的方法: public静态字符串getLocalIpAddressString(){ 试一试{ 对于(枚举en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){ NetworkInterface intf=en.nextElement(); 对
以下是我用来获取本地ip地址的方法:
public静态字符串getLocalIpAddressString(){
试一试{
对于(枚举en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){
NetworkInterface intf=en.nextElement();
对于(枚举Enumeration EnumipAddress=intf.getInetAddresses();EnumipAddress.hasMoreElements();){
InetAddress InetAddress=enumIpAddr.nextElement();
如果(!inetAddress.isLoopbackAddress()){
返回inetAddress.getHostAddress().toString();
}
}
}
}捕获(SocketException例外){
Log.e(“IPADDRESS”,例如toString());
}
返回null;
}
我得到的错误是:
WARN/System.err(3574):java.net.ConnectException:/192.168.2.163:8008-连接被拒绝
WARN/System.err(3574):位于org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:237)
WARN/System.err(3574):位于org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:199)
WARN/System.err(3574):位于java.net.Socket.startupSocket(Socket.java:734)
WARN/System.err(3574):位于java.net.Socket。(Socket.java:157)
WARN/System.err(3574):位于com.networks.phone.engine.sipinengine.rtpTest(sipinengine.java:1444)
我想这是我的IP地址和/或端口出错?但是,有谁能告诉我正确的方向,原因可能是什么吗?根据您的代码,我假设您试图打开一个从Android应用程序到同一个Android设备的套接字连接
由于基于Linux和其他平台,Android可能有某种防火墙或连接规则来阻止您的套接字成功连接。查看文档,这可能是Android配置问题,而不是Java问题。在我的情况下,我需要重定向端口,请查看:
或者您也可以尝试转发端口。在清单中声明网络权限的正确编码的android应用程序可以在未受驱动的端口上接受连接,因为设备上没有防火墙
但是,许多wifi和大多数移动网络都会将设备置于NAT和外部防火墙之后,因此入站连接尝试可能永远无法到达该设备。我在提示符中使用了ipconfig命令,然后使用“IPv4地址”连接到当前PC 我已成功连接服务器以及发送和接收字节 Android客户端代码:
s = new Socket("192.168.42.85",12345);
socket = ss.accept();
InetAddress ia = socket.getInetAddress();
System.out.println("Client Address: " + ia.getHostAddress());
PC服务器端代码:
s = new Socket("192.168.42.85",12345);
socket = ss.accept();
InetAddress ia = socket.getInetAddress();
System.out.println("Client Address: " + ia.getHostAddress());
我也有同样的问题。我必须使用ServerSocket而不是Socket:
ServerSocket=newserversocker(8888)代码>您可以先通过telnet连接到地址和端口号,看看会发生什么情况。它也可能是您正在连接的实际计算机。我正在实际的Android设备上尝试此操作,因此我不确定telnet是否会有多大帮助?这可能是一个愚蠢的问题,但您设备上的8008端口上是否有侦听内容?无论我尝试哪个端口,我都会被拒绝连接:)对,嗯,我想我的意思是,如果端口8008上没有其他程序监听,那么您将无法连接。您是否正在尝试接受传入的请求或连接到其他程序?也许,连接到其他设备可能是一个更好的主意?
socket = ss.accept();
InetAddress ia = socket.getInetAddress();
System.out.println("Client Address: " + ia.getHostAddress());