基于XMPP协议的即时聊天工具之发送文件
来源:互联网 发布:武侠小说推荐 知乎 编辑:程序博客网 时间:2024/05/18 23:15
最初还是在学校时接触的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协议的即时聊天工具之发送文件
- 基于XMPP协议的Android即时通信
- 基于XMPP协议的Android即时通信
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 基于XMPP协议的Android即时通信系
- 安装android samples ApiDemo Re-installation failed due to different application signaures 解决方法
- 二级指针与数组地址的区别与联系
- 如何提高标准输入输出流的速度
- < Unity 3D专栏 >批量操作,界面元素的显示状态
- Oracle 的 ORA-31605 错误解决办法
- 基于XMPP协议的即时聊天工具之发送文件
- POJ 1365 / Central Europe 1997 Prime Land (数论)
- SVN自动安装
- frame里面嵌套的子页面去改变iframe的高度
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- SQL Server 的 SET XACT_ABORT ON | OFF;
- 模板方法模式
- 理解
- Linux下DedeCMS详细安全设置教程