基于XMPP协议的即时聊天工具之发送文件
最初還是在學校時接觸的XMPP, 當時是做的一個簡單的基于XMPP協議的聊天工具,功能不是很全,只是實現了收、發消息、表情功能。
最近不是很忙,就補充了一些功能, 這里說一下文件的發送。
?? ? public void sendFile(File file){
? ? // 這段代碼有些人說必須帶,我試了試,在我的工程中發文件是帶不帶沒啥區別
// ? ? ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
// ? ? ? ? if (sdm == null)
// ? ? ? ? sdm = new ServiceDiscoveryManager(connection);
// ? ? ? ? sdm.addFeature("http://jabber.org/protocol/disco#info");
// ? ? ? ? sdm.addFeature("jabber:iq:privacy");
? ?
? ?
? ? FileTransferManager ftManager = new FileTransferManager(connection);
? ? FileTransferNegotiator.setServiceEnabled(connection, true);
? ? String to = connection.getRoster().getPresence("aaa@ServerIp/spark").getFrom();//獲得用戶狀態
// ? ?to = "xxx"+"@"+"xxx"+"/"+"xxx";//一定注意這里必須是完整JID ? jid = [ node "@" ] domain [ "/" resource ]
// ? ? 我是用的android客戶端給spark客戶端發送文件 ? ?
? ? OutgoingFileTransfer transfer = ftManager.createOutgoingFileTransfer(to);
? ? try {
transfer.sendFile(file, file.getName());
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
? ?
? ? while(!transfer.isDone()) {
? ? if(transfer.getStatus().equals(FileTransfer.Status.in_progress)){
? ? //可以調用transfer.getProgress();獲得傳輸的進度
? ? Log.i("wht", "傳輸進度 = "+transfer.getProgress());
? ?
? ? }else if(transfer.getStatus().equals(FileTransfer.Status.error)) {
? ? ? ? ?System.out.println("ERROR!!! " + transfer.getError());
? ? ? } else if (transfer.getStatus().equals(FileTransfer.Status.cancelled)
? ? ? ? ? ? ? ? ? ? ? ?|| transfer.getStatus().equals(FileTransfer.Status.refused)) {
? ? ? ? ?System.out.println("Cancelled!!! " + transfer.getError());
? ? ? }
? ? ? try {
? ? ? ? ?Thread.sleep(1000);
? ? ? } catch (InterruptedException e) {
? ? ? ? ?e.printStackTrace();
? ? ? }
? ? }
? ? }
??
總結
以上是生活随笔為你收集整理的基于XMPP协议的即时聊天工具之发送文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基于ssm+mysql的宠物店管
- 下一篇: 苹果锁定计算机的快捷键,苹果电脑快捷键使