TCP 和 UDP 的区别
参考:http://blog.csdn.net/li_ning_/article/details/52117463
TCP与UDP区别总结:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
TCP补充:
TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
UDP补充:
UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。
TCP:
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
UDP:
与之对应的UDP编程步骤要简单许多,分别如下:
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
最新文章
- TCP学习之三:客户端、服务端同步传输字符串
- Java数据类型和变量
- Deep Learning 1_深度学习UFLDL教程:Sparse Autoencoder练习(斯坦福大学深度学习教程)
- SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)
- SQL语句 - 嵌套查询
- [转]动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
- 在XML里的XSD和DTD以及standalone的使用3----具体使用详解
- Flash 无法输入中文的修正方法
- 图片样式 scaleType 属性
- hdu1030
- Java 多线程之线程池的使用
- Oracle 11g设置IP访问限制
- android dialog加载中动画效果
- Python Web学习笔记之图解TCP/IP协议和浅析算法
- ios 真机测试与发布详细流程,基于最新的开发者网站,ios7,xcode5(有截图的哦)[[[第一部分真机测试]]]
- chrome 浏览器 console 加入 jquery 测试调试 一介布衣
- ural 1297 后缀数组 最长回文子串
- 转载 HTTPS 之fiddler抓包、jmeter请求
- [Clr via C#读书笔记]Cp1CLR执行模型
- Java课程设计——坦克大战
热门文章
- 每日技术总结:setInterval,setTimeout,文本溢出,小程序,wepy
- 【习题 5-2 UVA-1594】Ducci Sequence
- JRebel热部署神器的配置(Eclipse,非教程,就自己看看)
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- js进阶 12-5 jquery中表单事件如何使用
- DOCKER学习心得
- google analytics是什么(免费的网站流量分析服务:比如分析有多少个人来了你的网站,告诉你怎么样才能在网站上面实现最大收益。)
- 【MySQL】15个有用的MySQL/MariaDB性能调整和优化技巧
- Coverage报告生成
- 创建ListView的基本步骤 分类: H1_ANDROID 2013-10-31 23:25 1276人阅读 评论(0) 收藏