- Socket ==
Socket 成为 "套接字"。
Android 与 服务端的 通信主要分为两种:
- Http 。
- Socket 。
Http: 连接使用的是 “请求 - 响应” 的 方式。在请求时简历连接通道,当客户端向服务端发送请求后,服务端才能向客户端返回数据。
Socket 是一种抽象层。通过 Socket 来发送和接受数据,可以将应用程序添加到网络中,与处在同一网络内的其他应用程序进行通信。总结,Socket 提供了 程序内部 与 外界通信 的端口,并为通信双方的提供了数据传输通道。
Socket 通信的话,会在程序内部提供与外部通信的端口,称为 端口通信。通过建立 Socket 连接,为通信双方的数据传输提供通道。
Socket 特点:数据丢失率低,简单,易于移植。
Socket: 在双方建立连接后,就可以直接进行数据的传输。连接时,可以实现 服务端 信息的 主动推送,而不需要每次由 客户端 向 服务端 发送请求。
TCP 协议: 面向连接 的协议,提供 稳定 的 双向 通信功能,TCP 连接的建立需要经过 “三次握手” 才能完成,为了提供稳定数据传输功能,其本身也有 超时重传机制。因此,具有很高的稳定性。 对应的 Java 类:Socket 。
UDP 协议: 无连接 的协议,提供 不稳定 的 单向 通信功能,额外开销小,效率高。UDP 也能实现双向通信功能。性能 上,UDP 具有 更好的效率。缺点:不能保证数据一定能传输到,特别是在网络环境差的情况下。对应的 Java 类:DatagramSocket 。
在 UDP 方式 下,Android 端 和 服务端 的接收可以看出:Android 端 和 服务端 的发送和接收大庭相径( 端口号 和 IP 对应了,通信就没问题 )。
TCP 使用的是 流方式 发送。
UDP 使用的是 (数据报)包方式 发送。