Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Android 远程客户端没有响应:使用asmack传输文件时出错_Android_Xmpp_Smack_Asmack - Fatal编程技术网

Android 远程客户端没有响应:使用asmack传输文件时出错

Android 远程客户端没有响应:使用asmack传输文件时出错,android,xmpp,smack,asmack,Android,Xmpp,Smack,Asmack,使用asmack接收文件时出现问题。这里我粘贴了我发送和接收的错误和数据包日志 // error 04-21 19:21:05.109: WARN/System.err(7401): Error in execution: 04-21 19:21:05.109: WARN/System.err(7401): -- caused by: java.util.concurrent.ExecutionException: 04-21 19:21:05.109: WARN/System.err(74

使用asmack接收文件时出现问题。这里我粘贴了我发送和接收的错误和数据包日志

// error
04-21 19:21:05.109: WARN/System.err(7401): Error in execution:
04-21 19:21:05.109: WARN/System.err(7401):   -- caused by: java.util.concurrent.ExecutionException:
04-21 19:21:05.109: WARN/System.err(7401):   -- caused by: No response from remote client:
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:199)
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.access$100(IncomingFileTransfer.java:47)
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$1.run(IncomingFileTransfer.java:124)
04-21 19:21:05.109: WARN/System.err(7401):     at java.lang.Thread.run(Thread.java:1019)
04-21 19:21:05.109: WARN/System.err(7401): Nested Exception:
04-21 19:21:05.109: WARN/System.err(7401): java.util.concurrent.ExecutionException:
04-21 19:21:05.109: WARN/System.err(7401):   -- caused by: No response from remote client:
04-21 19:21:05.109: WARN/System.err(7401):     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:234)
04-21 19:21:05.109: WARN/System.err(7401):     at java.util.concurrent.FutureTask.get(FutureTask.java:91)
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:193)
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.access$100(IncomingFileTransfer.java:47)
04-21 19:21:05.109: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$1.run(IncomingFileTransfer.java:124)
04-21 19:21:05.109: WARN/System.err(7401):     at java.lang.Thread.run(Thread.java:1019)
04-21 19:21:05.109: WARN/System.err(7401): Caused by:
04-21 19:21:05.109: WARN/System.err(7401):   -- caused by: No response from remote client:
04-21 19:21:05.167: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.FaultTolerantNegotiator.createIncomingStream(FaultTolerantNegotiator.java:113)
04-21 19:21:05.167: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$2.call(IncomingFileTransfer.java:186)
04-21 19:21:05.217: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$2.call(IncomingFileTransfer.java:183)
04-21 19:21:05.217: WARN/System.err(7401):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-21 19:21:05.217: WARN/System.err(7401):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-21 19:21:05.236: WARN/System.err(7401):     at org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:190)
04-21 19:21:05.236: WARN/System.err(7401):     ... 3 more




// packets sent and received:
04-21 19:20:53.177: INFO/System.out(7401): 07:20:53 PM RCV  (1079262448): <presence from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-22'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack/' ver='zAGnwwThW7wuhrojiPg9I4Spwms='/></presence>
04-21 19:20:54.479: INFO/System.out(7401): 07:20:54 PM RCV  (1079262448): <presence from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-23'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack/' ver='zAGnwwThW7wuhrojiPg9I4Spwms='/></presence>
04-21 19:20:54.602: INFO/System.out(7401): 07:20:54 PM RCV  (1079262448): <iq from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-24' type='set'><si xmlns='http://jabber.org/protocol/si' id='jsi_5262843704368872277' profile='http://jabber.org/protocol/si/profile/file-transfer'><file xmlns='http://jabber.org/protocol/si/profile/file-transfer' name='rails.png' size='6646'><desc>rails.png</desc></file><feature xmlns='http://jabber.org/protocol/feature-neg'><x xmlns='jabber:x:data' type='form'><field var='stream-method' type='list-multi'><option><value>http://jabber.org/protocol/bytestreams</value></option><option><value>http://jabber.org/protocol/ibb</value></option></field></x></feature></si></iq>
04-21 19:20:54.639: DEBUG/Lisner Called(7401): Incoming Listner
04-21 19:20:54.658: DEBUG/file name(7401): rails.png
04-21 19:20:54.658: DEBUG/file status(7401): Initial
04-21 19:20:54.658: DEBUG/file size(7401): 6646
04-21 19:20:54.684: DEBUG/file path(7401): /mnt/sdcard/DCIM/Camera/rails.png
04-21 19:20:54.684: DEBUG/Receive(7401): before receive
04-21 19:20:54.712: DEBUG/R1(7401): after receive
04-21 19:20:54.772: INFO/System.out(7401): 07:20:54 PM SENT (1079262448): <iq id="fDXhN-24" to="nirav@mychathost/Smack" from="rtest@mychathost/Smack" type="result"><si xmlns="http://jabber.org/protocol/si"><feature xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="submit"><field var="stream-method"><value>http://jabber.org/protocol/bytestreams</value><value>http://jabber.org/protocol/ibb</value></field></x></feature></si></iq>
04-21 19:20:55.724: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:20:56.765: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:20:57.810: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:20:58.330: INFO/System.out(7401): 07:20:58 PM RCV  (1079262448): <iq from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-26' type='set'><query xmlns='http://jabber.org/protocol/bytestreams' sid='jsi_5262843704368872277' mode='tcp'><streamhost jid='nirav@mychathost/Smack' host='127.0.0.1' port='7777'/></query></iq>
04-21 19:20:58.425: INFO/System.out(7401): 07:20:58 PM SENT (1079262448): <iq id="fDXhN-26" to="nirav@mychathost/Smack" from="rtest@mychathost/Smack" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_5262843704368872277" mode = "tcp"><streamhost jid="nirav@mychathost/Smack" host="127.0.0.1" port="7777"/></query><error code="404" type="CANCEL"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Could not establish socket with any provided host</text></error></iq>
04-21 19:20:58.874: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:20:59.943: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:21:00.765: INFO/System.out(7401): 07:21:00 PM RCV  (1079262448): <iq from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-27' type='set'><open xmlns='http://jabber.org/protocol/ibb' block-size='4096' sid='jsi_5262843704368872277' stanza='iq'/></iq>
04-21 19:21:00.804: INFO/System.out(7401): 07:21:00 PM SENT (1079262448): <iq id="fDXhN-27" to="nirav@mychathost/Smack" from="rtest@mychathost/Smack" type="error"><error code="501" type="CANCEL"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
04-21 19:21:00.978: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:21:02.017: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:21:03.039: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:21:04.071: INFO/transfere file(7401): receiving file status Negotiating Stream progress: 0.0
04-21 19:21:05.109: INFO/transfere file(7401): receiving file status Error progress: 0.0
//错误
04-21 19:21:05.109:警告/系统错误(7401):执行中出错:
04-21 19:21:05.109:WARN/System.err(7401):--由以下原因引起:java.util.concurrent.ExecutionException:
04-21 19:21:05.109:警告/系统错误(7401):--原因:远程客户端没有响应:
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:199)
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.access$100(IncomingFileTransfer.java:47)
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$1.run(IncomingFileTransfer.java:124)
04-21 19:21:05.109:WARN/System.err(7401):at java.lang.Thread.run(Thread.java:1019)
04-21 19:21:05.109:警告/系统错误(7401):嵌套异常:
04-21 19:21:05.109:WARN/System.err(7401):java.util.concurrent.ExecutionException:
04-21 19:21:05.109:警告/系统错误(7401):--原因:远程客户端没有响应:
04-21 19:21:05.109:WARN/System.err(7401):位于java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:234)
04-21 19:21:05.109:WARN/System.err(7401):位于java.util.concurrent.FutureTask.get(FutureTask.java:91)
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:193)
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.access$100(IncomingFileTransfer.java:47)
04-21 19:21:05.109:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$1.run(IncomingFileTransfer.java:124)
04-21 19:21:05.109:WARN/System.err(7401):at java.lang.Thread.run(Thread.java:1019)
04-21 19:21:05.109:警告/系统错误(7401):由以下原因引起:
04-21 19:21:05.109:警告/系统错误(7401):--原因:远程客户端没有响应:
04-21 19:21:05.167:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.faultTolerantCongregator.createIncomingStream(faultTolerantCongregator.java:113)
04-21 19:21:05.167:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$2.call(IncomingFileTransfer.java:186)
04-21 19:21:05.217:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer$2.call(IncomingFileTransfer.java:183)
04-21 19:21:05.217:WARN/System.err(7401):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-21 19:21:05.217:WARN/System.err(7401):位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-21 19:21:05.236:WARN/System.err(7401):位于org.jivesoftware.smackx.filetransfer.IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:190)
04-21 19:21:05.236:警告/系统错误(7401):。。。3个以上
//发送和接收的数据包:
04-21 19:20:53.177:信息/系统输出(7401):07:20:53下午RCV(1079262448):
04-21 19:20:54.479:信息/系统输出(7401):07:20:54下午RCV(1079262448):
04-21 19:20:54.602:信息/系统输出(7401):07:20:54下午RCV(1079262448):轨道。pnghttp://jabber.org/protocol/bytestreamshttp://jabber.org/protocol/ibb
04-21 19:20:54.639:调试/调用Lisner(7401):传入Listner
04-21 19:20:54.658:调试/文件名(7401):rails.png
04-21 19:20:54.658:调试/文件状态(7401):初始
04-21 19:20:54.658:调试/文件大小(7401):6646
04-21 19:20:54.684:调试/文件路径(7401):/mnt/sdcard/DCIM/Camera/rails.png
04-21 19:20:54.684:调试/接收(7401):接收前
04-21 19:20:54.712:调试/R1(7401):接收后
04-21 19:20:54.772:信息/系统输出(7401):07:20:54下午发送(1079262448):http://jabber.org/protocol/bytestreamshttp://jabber.org/protocol/ibb
04-21 19:20:55.724:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:20:56.765:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:20:57.810:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:20:58.330:信息/系统输出(7401):07:20:58下午RCV(1079262448):
04-21 19:20:58.425:信息/系统输出(7401):07:20:58下午发送(1079262448):无法与任何提供的主机建立套接字
04-21 19:20:58.874:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:20:59.943:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:21:00.765:信息/系统输出(7401):07:21:00下午RCV(1079262448):
04-21 19:21:00.804:信息/系统输出(7401):晚上7:21:00发送(1079262448):
04-21 19:21:00.978:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:21:02.017:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:21:03.039:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:21:04.071:信息/传输文件(7401):接收文件状态协商流进度:0.0
04-21 19:21:05.109:信息/传输文件(7401):接收文件状态错误进度:0.0

如果看不到您的代码,就很难评估问题。但是,我最初遇到了与您相同的问题,因为我使用的是
InputStream=transfer.receivefile()。这是通过使用
transfer.receivefile(新文件(getExternalFilesDir(null),transfer.getFileName())修复的。尝试像这样添加侦听器

fileTransferManager.addFileTransferListener(new FileTransferListener() {
    @Override
    public void fileTransferRequest(FileTransferRequest request) {
        try {
             IncomingFileTransfer transfer = request.accept();
             transfer.recieveFile(new File(getExternalFilesDir(null), transfer.getFileName()));
             String line;
             BufferedReader br = new BufferedReader(new FileReader(new File(getExternalFilesDir(null), transfer.getFileName())));
             while ((line = br.readLine()) != null) {
                 System.out.println(line);
             }
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
});
从您的日志中:

04-21 19:20:58.330: INFO/System.out(7401): 07:20:58 PM RCV  (1079262448): <iq from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-26' type='set'><query xmlns='http://jabber.org/protocol/bytestreams' sid='jsi_5262843704368872277' mode='tcp'><streamhost jid='nirav@mychathost/Smack' host='127.0.0.1' port='7777'/></query></iq>
04-21 19:20:58.425: INFO/System.out(7401): 07:20:58 PM SENT (1079262448): <iq id="fDXhN-26" to="nirav@mychathost/Smack" from="rtest@mychathost/Smack" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_5262843704368872277" mode = "tcp"><streamhost jid="nirav@mychathost/Smack" host="127.0.0.1" port="7777"/></query><error code="404" type="CANCEL"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Could not establish socket with any provided host</text></error></iq>
....
04-21 19:21:00.765: INFO/System.out(7401): 07:21:00 PM RCV  (1079262448): <iq from='nirav@mychathost/Smack' to='rtest@mychathost/Smack' id='fDXhN-27' type='set'><open xmlns='http://jabber.org/protocol/ibb' block-size='4096' sid='jsi_5262843704368872277' stanza='iq'/></iq>
04-21 19:21:00.804: INFO/System.out(7401): 07:21:00 PM SENT (1079262448): <iq id="fDXhN-27" to="nirav@mychathost/Smack" from="rtest@mychathost/Smack" type="error"><error code="501" type="CANCEL"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
04-21 19:20:58.330:INFO/System.out(7401):07:20:58 PM RCV(1079262448):
04-21 19:20:58.425:信息/系统输出(7401):07:20:58下午发送(1079262448):无法与任何提供的主机建立套接字
....
04-21 19:21:00.765:信息/系统输出(7401):07:21:00下午RCV(1079262448):
04-21 19:21:00.804:信息/系统输出(7401):晚上7:21:00发送(10792)
private void receiveFile(XMPPConnection connection2) {
    // TODO Auto-generated method stub
    if(connection2 != null){
        ServiceDiscoveryManager sdm =      ServiceDiscoveryManager.getInstanceFor(connection2);
        if (sdm == null){
            sdm = new ServiceDiscoveryManager(connection2);
        }
        sdm.addFeature("http://jabber.org/protocol/disco#info");
        sdm.addFeature("jabber:iq:privacy");
        FileTransferManager manager = new FileTransferManager(connection2);

        manager.addFileTransferListener(new FileTransferListener() {

            public void fileTransferRequest(final FileTransferRequest request) {
                new Thread(){

                    @Override
                    public void run() {
                        IncomingFileTransfer transfer = request.accept();                           
                        File mf = Environment.getExternalStorageDirectory();                
                        final File file = new File(mf.getAbsoluteFile() +"/"+ transfer.getFileName());
                        try{
                            transfer.recieveFile(file);
                            while(!transfer.isDone()){
                               try{
                                  Thread.sleep(1000);
                               }
                               catch (Exception e) {
                                  Log.e("", e.getMessage());
                               }
                               if(transfer.getStatus().equals(Status.error)) {
                                  Log.e("ERROR!!! ", transfer.getError() + "");
                               }
                               if(transfer.getException() != null) {
                                  transfer.getException().printStackTrace();
                               }
                            }
                            handler.post(new Runnable() {

                                @Override
                                public void run() {
                                    // TODO Auto-generated method stub
                                    String xMsg = textViewSent.getText().toString();
                                    String newMessage = "File Received at "+file.getAbsolutePath();
                                    textViewSent.setText("\n"+xMsg+"\n"+newMessage);
                                }
                            });
                         }
                        catch (Exception e) {
                            e.printStackTrace();
                        }                           
                     };
                   }.start();
            }
        });
    }