套接字(流)和套接字(数据报)有什么区别?
为什么要使用其中之一?
针对VoIP和游戏的案例,这类协议包含自己的数据排序机制。但如果一个数据包损坏或丢失,你不想等待流媒体协议(通常是TCP)发出重新发送请求--你需要快速恢复。TCP可能需要花费几分钟才能恢复,而对于实时协议(如游戏或VoIP),甚至三秒钟都是无法接受的!使用像UDP这样的数据报协议允许软件通过简单地忽略丢失的数据或比TCP更早地重新请求来极快速地恢复。
VoIP是忽略丢失数据的好选择--一方将只听到短暂的间隙声,类似于在与电话信号弱的人通话时发生的情况。游戏协议通常要复杂一些,但所采取的行动通常是要么忽略丢失的数据(如果随后接收的数据优先于丢失的数据),要么重新请求丢失的数据,或者请求完整的状态更新以确保客户端的状态与服务器的同步。
流式套接字:
数据报套接字: