文档章节

综合技术 --xmpp文件传输

求是科技
 求是科技
发布于 2015/06/18 16:47
字数 631
阅读 41
收藏 0
点赞 0
评论 0

xmpp中的文件传输

http://www.aichengxu.com/view/8686

方案一:把文件先转成nsdata存储,然后再放到nsstring中,以消息的形式发送给对方,对方接收后,将nsstring转回nsdata,然后再转成你需要的格式即可。效率不高,但容易实现。


发送语音图片有三种方法

1.xmpp smack,文件传输方式

2.文本流

3.服务器中转

服务器中转方式:

1.主持人画画,生成图片

2.将图片传到 数据服务器上,指定路径

3.将该指定路径发往xmpp服务器

4.xmpp服务器转发 指定路径 给房间里所有的用户

5.每个用户请求 数据服务器,下载图片直接显示


http://www.cnblogs.com/imlucky/archive/2011/10/20/2218780.html

xmpp是一种xml技术,主要用于解决即时消息发送和接收,xml流技术并不适用于大数据量的传输。

在xmpp中,信息传输是所谓的字符传输;而数据传输则是字节流传输(bytestreams)。

xmpp中,客户端之间文件传输方式有如下三种:

1.xep-0047:In-Band ByteStreams  带内字节流,这个协议适用于小数据量传输,它采用的是字节流传输方式。带内,指的是夹带在xml流中,通过xmpp服务器中转传输,具体做法是将数据用base64编码后放在xml流中传给对方。这个方法不好,base64编码效率低,而且所有的数据必须都由xmpp服务器中转。

2.xep-0066:Out of Band Data 带外字节流,带内不行就走带外,也就是不经过xmpp服务器。具体做法是在发起端临时建立一个http服务(当然也可以是别的服务),将数据放在这个服务器上,将数据服务器的ip和端口通过xmpp消息发送给接收方,让接收方直接去指定地址下载。注意:数据服务器一定要是公网ip,否则接收方无法访问。

3.xep-0065:SOCKS5 ByteStreams  SOCKS5字节流,使用SOCKS5传输文件,有直连方式和代理传输两种方式。发送方将预定的ip和端口(通过xmpp消息)发送给接收方。如果双方都在公网,采用SOCKS5直接传输。如果任何一方在内网,经过SOCKS5代理服务器传输,发送方将代理服务器的ip和端口发送给接收方。


© 著作权归作者所有

共有 人打赏支持
求是科技
粉丝 89
博文 453
码字总数 228281
作品 0
成都
后端工程师
通过XMPP协议实现即时通讯介绍

四种即时通讯协议 概述 目前IM有四种协议:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP。PRIM与XMPP、 SIMPLE类似,...

崔同亮 ⋅ 2014/01/22 ⋅ 0

XMPP协议学习笔记一

即时通讯技术简介 即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容。大多数常用的即...

程序袁_绪龙 ⋅ 2014/12/11 ⋅ 0

agsXMPP + Openfire 即时通讯开发(二) 【文件传输】

上篇bolg(agsXMPP + Openfire 即时通讯开发(一) 【agsXMPP 连接 Openfire】)中agsXMPP的MiniClient已经可以相互之间进行通讯了,本篇介绍如何进行文件传输。 首先我们需要了解XMPP文件传输...

xiao刀 ⋅ 2016/05/25 ⋅ 0

XMPP协议简单介绍

由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/434 1为什么选择XMPP协议 在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging and Pres...

flyicarus ⋅ 2014/12/11 ⋅ 1

Androidpn 简单实现及分析

(文中部分内容来自网络) XMPP协议: XMPP : The Extensible Messaging andPresence Protocol. 中文全称:可扩展通讯和表示协议. 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示...

明舞 ⋅ 2014/08/09 ⋅ 0

移动 IM 学习笔记[转]

转: http://ruby-china.org/topics/22530 最近在看移动IM相关的资料, 然后发现网上有很多的资料,所以在学习过程中,整理了一些笔记, 供那些 想了解 移动IM的童鞋一些参考。 移动IM技术选型...

强子哥哥 ⋅ 2016/05/25 ⋅ 2

Openfire与XMPP协议

什么是OpenFire Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。   您可以使用它轻易的构建高效率的即时通信服务器。Openfire安装和使用都非常简单,并利用W...

postdep ⋅ 2013/12/25 ⋅ 0

移动端即时通讯系统实践

1、即时通讯系统的需求 任何技术系统都来源于真实业务的需求,做架构设计之前应该先设定好目标。作为一个即时通讯应用,可以参考微信的使用体验,你需要保证以下特性: 1、实时。消息的接收端...

杭城小刘 ⋅ 2016/07/25 ⋅ 1

XMPP协议学习笔记二

IM的实现原理 在我最初学习编程的时候,曾经用JAVA实现了一个最简单版的IM通讯,即通过Socket建立两台电脑之间的连接,然后发送IO流来进行即时通讯,我们现在所使用的IM软件尽管看上去非常复...

程序袁_绪龙 ⋅ 2014/12/11 ⋅ 0

XMPP协议学习笔记

IM的实现原理 在我最初学习编程的时候,曾经用JAVA实现了一个最简单版的IM通讯,即通过Socket建立两台电脑之间的连接,然后发送IO流来进行即时通讯,我们现在所使用的IM软件尽管看上去非常复...

JayPark不作死 ⋅ 2014/06/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 24分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 28分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 33分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 34分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 44分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部