Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android套接字连接被拒绝_Java_Android_Sockets_Ip Address - Fatal编程技术网

Java 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(); 对

我试图在Android上打开一个套接字,但每次我尝试时,无论我用什么方式尝试,都会收到连接被拒绝的错误

错误发生在我尝试创建连接的下面代码行中



以下是我用来获取本地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());