0

我正在为这段代码苦苦挣扎:

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

它似乎无法发送文件。

谁能帮我解决这个问题?

4

3 回答 3

2

我相信 Gmail(从您上面的代码来看)不支持文件传输。看到这个。您还可以发送一个disco#itemanddisco#info来查看它是否支持任何类型的字节流代理。但是,某些服务器(例如jabber.org)不会disco#info在代理上返回任何内容。

有关查询 XMPP 服务的信息,请参阅我的博客

于 2010-10-08T02:40:34.820 回答
0

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

于 2011-05-02T21:54:35.410 回答
0

您尚未输入完整的接收者 ID。检索它使用

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

然后,进行传输并确保接收者是使用 XMPP 的接收者,并且也不使用 gtalk,因为它的文件传输与 XMPP 不同。

于 2010-12-15T21:32:42.097 回答