最近在研究 即时通讯编程,一查网络资料,杂乱无章的信息疯拥而至。XMPP ?Socket 该选择哪以个?这就需要了解到它们实现的机制了。下面笔者就来分析一下,便于对它们的选择,如有错处,请纠正,共勉。
首先,看这两者的区别,XMPP 是一个应用层协议,其底层(传输层和网络层)依然是Socket通信。换句话说,XMPP是建立在Socket通信基础上的。
关于层次的问题,又懵乎了吧。它们两者都是基于网络应用,而网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如此,两者之间可以看出区别了吧。
再深入研究一番,就涉及到经常提到的 TCP/IP和HTTP协议。TCP协议对应于传输层,而HTTP协议对应于应用层。在对比上面的 XMPP协议 与 Socket ,有没有发现两组之间的共同之处。确实如此 HTTP协议 XMPP 都是 一个应用层协议, 不过 TCP/IP是一个传输层协议 , Socket不是一个协议 ,Socket是对TCP/IP协议的封装和应用.也就是说Socket是TCP/IP协议的具体实现。
接下来,再分析一下,这些协议能做些什么,干什么用的呢?首先上面说到的
HTTP协议 XMPP 是一个 应用层协议 ,它们主要解决如何包装数据。
TCP/IP协议是传输层协议 ,主要解决数据如何在网络中传输。
可想而知 XMPP是建立在Socket通信基础上的 这句话它到底描述了什么了吧,没有数据的传输,哪里有数据给你包装呢!但是两者在即时通讯编程的时候,又是相互独立的,
原因的是它们都有相应的框架对传输的数据进行处理了。但是 HTTP协议 与 TCP/IP协议 则不然,它们之间还是不能相互独立的。关于TCP/IP和HTTP协议的关系,网络有一段比
较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容."
到此,应该有恍然大悟的措举了吧。:)
如果 即时通讯 ?XMPP :Socket , 还在这个选择上还飘忽不定,那么看完下面的介绍就该得出结论了吧
下面笔者列举一下使用 XMPP ?Socket 分别需要的条件
XMPP 是一个 应用层协议 它要拿到网络中传输的数据,才能对数据进行包装处理。所以使用它来即时通讯要做好以下工作:
(1)搭建好XMPP服务器(服务器比较常用的 有 ejabberd ,openfire)
(2)客户端(Adium)
具体的步骤:点击打开链接
Socket 作用于传输层,它就可以直接操作网络之间传输的数据了,至于识别数据内容,导入CocoaAsyncSocket框架使用即可。框架链接点击打开链接
笔者 在使用 Socket ,后续操作代码逐一奉上!!记关注。。。