网络编程之三:java.net包的DatagramSocket和DatagramPacket

本博文主要简述TCP/UDP的比较和应用场景,以及java.net包下基于DatagramSocket/DatagramPacket的编程和源码分析

TCP与UDP
    作为传输层两个重要的协议,得到广泛的使用。
TCP
    1. 面向连接,速度较慢,证明:连接双方的一方主动断开连接之后,另一方的recieve()会立即作出响应。
    2. 面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节。流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。
    3. 通信方式:全双工通信(发送缓存&接收缓存)。
    4. 保证数据正确性。
    5. 具备流量控制和拥塞控制。
    6. 应用场景:浏览器surfing(Http)、文件传输(FTP)、接发邮件(SMTP,POP)、远程登录(telnet、ssh)。
UDP
    1. 面向非连接,速度较快,证明:连接双方的一方主动断开连接之后,另一方的recieve()仍然阻塞。
    2. 面向数据包,UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
    3. 通信方式:一对一、一对多、多对一、多对多。
    4. 可能丢包,譬如我们看视频时失帧就是丢包的结果。
    5. 无流量控制和拥塞控制。
    6. 应用场景:即时聊天(QQ)、视频流(Youku的视频)、语音流(YY语音)等,适用于多播和广播的应用场景。

DatagramSocket/DatagramPacket
    有人把DatagramSocket比作码头,把DatagramPacket比作集装箱,前者只是存放各种数据包的地方,而后者决定数据包的内容和目的地址。这种
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值