我正在努力解决这段代码:
FileTransferManager manager = new FileTransferManager(connection)
OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer("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();
}
它无法发送文件。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
我相信Gmail(从上面的代码判断)不支持文件传输。见this。您还可以发送disco#item
和disco#info
以查看它是否支持任何类型的字节流代理。但是,某些服务器(如jabber.org
)不会在代理上返回任何disco#info
。
要查询XMPP服务,请参阅我的blog。
答案 1 :(得分:0)
您尚未输入接收者的完整ID。使用
检索它myRoster.getRoster().getPresence(entry).getFrom()
然后,进行传输并确保接收方是使用XMPP的接收方,并且也不使用gtalk,因为它的文件传输与XMPP不同。
答案 2 :(得分:0)
我们发现SMACK在登录后往往会添加“/ smack”应用程序说明符。如果您使用上述技术,您应该会看到这种情况。奇怪的是,这不会影响邮件,但会影响文件传输