2012-04-23 11 views
26

Tôi gặp sự cố khi nhận tệp bằng cách sử dụng asmack. Ở đây tôi dán lỗi và gói mà tôi đã gửi và nhận nhật kýKhông có phản hồi từ máy khách từ xa: lỗi trong quá trình truyền tệp bằng 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='[email protected]/Smack' to='[email protected]/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='[email protected]/Smack' to='[email protected]/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='[email protected]/Smack' to='[email protected]/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="[email protected]/Smack" from="[email protected]/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='[email protected]/Smack' to='[email protected]/Smack' id='fDXhN-26' type='set'><query xmlns='http://jabber.org/protocol/bytestreams' sid='jsi_5262843704368872277' mode='tcp'><streamhost jid='[email protected]/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="[email protected]/Smack" from="[email protected]/Smack" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_5262843704368872277" mode = "tcp"><streamhost jid="[email protected]/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='[email protected]/Smack' to='[email protected]/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="[email protected]/Smack" from="[email protected]/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 
+0

nếu bạn có giải pháp hơn bạn có thể giúp tôi, ứng dụng trò chuyện của tôi với máy chủ ejabberd và giữa các máy khách Android hoạt động bình thường nhưng khi tôi gửi bất kỳ tệp nào hơn tiến trình gửi bị kẹt ở mức 0.0..điều gì có thể là lý do? – nitesh

Trả lời

1

Nếu không thấy mã của bạn khó đánh giá được sự cố. Tuy nhiên, ban đầu tôi có cùng một vấn đề với bạn vì tôi đã sử dụng InputStream stream = transfer.recieveFile();. Điều này đã được sửa bằng cách sử dụng transfer.recieveFile(new File(getExternalFilesDir(null), transfer.getFileName()));. Thử thêm người nghe như thế này ...

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(); 
     } 
    } 
}); 
1

Từ các bản ghi của bạn:

04-21 19:20:58.330: INFO/System.out(7401): 07:20:58 PM RCV (1079262448): <iq from='[email protected]/Smack' to='[email protected]/Smack' id='fDXhN-26' type='set'><query xmlns='http://jabber.org/protocol/bytestreams' sid='jsi_5262843704368872277' mode='tcp'><streamhost jid='[email protected]/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="[email protected]/Smack" from="[email protected]/Smack" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_5262843704368872277" mode = "tcp"><streamhost jid="[email protected]/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='[email protected]/Smack' to='[email protected]/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="[email protected]/Smack" from="[email protected]/Smack" type="error"><error code="501" type="CANCEL"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq> 

Các bytestream transfer method failes, bởi vì chỉ có một địa phương (127.0.0.1) cấu hình streamhost. in-band bytestream không thành công vì bên kia không hỗ trợ IBB.

Bạn nên:

4

Dude Chỉ cần sao chép và dán đoạn mã sau,

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(); 
      } 
     }); 
    } 

Hãy nhớ bỏ phiếu ...

Các vấn đề liên quan