即时通讯实现方式:
第一类:基于应用层的协议或第三方库
1.第三方:环信,融云,推送等
2.应用层协议:
XMPP协议(推荐):
Smack(客户端)+Openfire(服务端)(基于应用层的xmpp协议,其实XMPP 是一种很类似于http协议的一种数据传输协议,它的过程就如同“解包装--〉包装”的过程,用户只需要明白它接收的类型,并理解它返回的类型,就可以很好的利用xmpp来进行数据通讯。)
MQTT协议:IBM开发的即时通讯协议。
SIP:基于SIP,增加了message和presence的扩展。
私有协议:ActivitySync
第二类:基于传输层的协议
3.Socket(推荐)
:基于 传输层的TCP/IP协议。三次握手建立连接,四次挥手断开连接。可以自己实现
或者用第三方Socket组件,如Nio可以管理通讯过程中断开、闲置、打开、创建等过程。工具:TCP/UDP Socket调试工具
4.Udp:带ip和port的包直接发送到服务器,不安全,容易丢包
OSI七层:开放式系统互联。 网络互联七层框架:应用层、表示层、会话层 、传输层、网络层、数据链
路层、物理层。
常说的TCP/UDP协议属于传输层,Http、xmpp等属于应用层,后者依赖前者。
socket属于网络的哪个层?
传输层。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的
问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应
用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接
口
SOCKET与TCP,UDP有什么关系
SOCKET是Java实现数据通信的API。
这个词语起源于BSD相关的UNIX,程序开发中用于process之间通信的API名称。
TCP/UDP是OSI模型的第四层中定义的两种通信方式。
也就是说,SOCKET是API,而TCP/UPD是通信协议,两种根本不同的东西。
语言表达的例子:
用SOCKET实现TCP(或者UDP)通信。 (相反,TCP或者UDP通信也可以不使用SOCKET实现)