Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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_Connection Reset - Fatal编程技术网

Java Android套接字异常(由对等方重置连接)

Java Android套接字异常(由对等方重置连接),java,android,sockets,connection-reset,Java,Android,Sockets,Connection Reset,我正在尝试使用Android的vpn服务在收到数据包后将其转发到原始目的地。在使用正确的目标地址将数据写入套接字后,我尝试获得如下响应: Socket socket = SocketChannel.open().socket(); socket.connect(new InetSocketAddress(ipPacket.getDestinationIp(), ipPacket.getDstPort())); ByteBuffer serverResponse = ByteBuffer.all

我正在尝试使用Android的
vpn服务
在收到数据包后将其转发到原始目的地。在使用正确的目标地址将数据写入套接字后,我尝试获得如下响应:

Socket socket = SocketChannel.open().socket();
socket.connect(new InetSocketAddress(ipPacket.getDestinationIp(), ipPacket.getDstPort()));

ByteBuffer serverResponse = ByteBuffer.allocate(65535);
InputStream socketInputStream = socket.getInputStream();
int responseLength = socketInputStream.read(serverResponse.array());
但是,行
int responseLength=socketInputStream.read(serverResponse.array())导致以下问题:

java.net.SocketException:recvfrom失败:EconReset(由对等方重置连接)


如何修复此问题?

告诉另一端的服务器(=对等方)不要关闭连接:)无论导致此问题的错误是什么,都不在您显示的几行代码中。你是如何得到那个
插座的?您以前是
.close()
它还是附加到它的流?@zapl我创建了如下套接字:
socket socket=SocketChannel.open().socket()
socket.connect(新的InetSocketAddress(ipPacket.getDestinationIp(),ipPacket.getdsport())
其中目标IP和端口来自VPN的
tun
interface@EJP对不起,我不明白你想说什么,但是为什么你要使用NIO和streams、ByteBuffers和字节数组的奇怪混合体呢?下定决心吧。用一个或另一个。如果你是网络初学者,我肯定会使用套接字和流。@EJP我使用的是
SocketChannel.open()
,因为没有它,
VpnService
中的
protect()
方法就无法工作。我已经更改了它,现在它可以正常工作了。谢谢你的帮助!告诉另一端的服务器(=对等方)不要关闭连接:)无论导致这种情况的错误是什么,都不在您显示的几行代码中。你是如何得到那个
插座的?您以前是
.close()
它还是附加到它的流?@zapl我创建了如下套接字:
socket socket=SocketChannel.open().socket()
socket.connect(新的InetSocketAddress(ipPacket.getDestinationIp(),ipPacket.getdsport())
其中目标IP和端口来自VPN的
tun
interface@EJP对不起,我不明白你想说什么,但是为什么你要使用NIO和streams、ByteBuffers和字节数组的奇怪混合体呢?下定决心吧。用一个或另一个。如果你是网络初学者,我肯定会使用套接字和流。@EJP我使用的是
SocketChannel.open()
,因为没有它,
VpnService
中的
protect()
方法就无法工作。我已经更改了它,现在它可以正常工作了。谢谢你的帮助!