开发者

How to send files using Smack?

I am struggling with this code:

FileTransferManager manager = new FileTransferManager(connection)

OutgoingFileTransfer transfer = manager.createOutgoing开发者_运维问答FileTransfer("gmailusername@gmail/Smack");


try { 
  System.out.println("000"); 
  transfer.sendFile(new File("D:/cow.wav"), "Moo !"); 
  System.out.println("111"); 

  while(!transfer.isDone()) { 
    System.out.println(transfer.getProgress() + " is done!");    
    //System.out.println(transfer.getStreamID() + " is done!"); 

    try { 
      Thread.sleep(1000); 
    } 
    catch (InterruptedException e) { 
      // TODO Auto-generated catch block e.printStackTrace(); 
    }
  } 
} 
catch (XMPPException e) { 
  // TODO Auto-generated catch block e.printStackTrace(); 
}

It seams that it can't send the file.

Can anyone help me solve this problem ?


I believe Gmail (judging from your code above) does not support file transfer. See this. You can also send a disco#item and disco#info to see if it supports any kind of byte stream proxy. However some servers like jabber.org does not return any disco#info on proxies.

For querying XMPP services see my blog.


We discovered that SMACK tends to add the "/smack" application specifier after login. If you use the above techniques you should see this happening. Oddly this doesn't affect messages but does affect file transfer


You haven't entered the complete id of receiver. Retrieve it using

myRoster.getRoster().getPresence(entry).getFrom()

Then, make the transfer and ensure that recieiver is the one using XMPP and also doesn't use gtalk because its file transfer is different from XMPP.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜