2010-10-07 83 views
0

我这个代码挣扎:如何使用Smack发送文件?

FileTransferManager manager = new FileTransferManager(connection) 

OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer("[email protected]/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(); 
} 

它接缝,它不能发送文件。

任何人都可以帮我解决这个问题吗?

回答

2

我相信Gmail(根据您的代码判断)不支持文件传输。见this。您也可以发送disco#itemdisco#info以查看它是否支持任何种类的字节流代理。但是一些服务器如jabber.org不会在代理上返回任何disco#info

对于查询XMPP服务,请参阅我的blog

0

您尚未输入收件人的完整ID。使用

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

找回它,然后,使转移,并确保recieiver是使用XMPP的一个,也因为它的文件传输是XMPP不同的不使用,每增加。

0

我们发现SMACK往往会在登录后添加“/ smack”应用说明符。如果你使用上述技巧,你应该看到这种情况发生。奇怪的是,这不会影响消息,但确实会影响文件传输

相关问题