tcp、udp、socket,关系
来源:互联网 发布:我的淘宝卖家旺旺号 编辑:程序博客网 时间:2024/06/08 15:26
1QQ等网络即时通信,用的就是socket。
2tcp和udp是一个层次上的东西,是网络传输层的东西;socket和两者不是一个层次的技术,socket比tcp和udp层次要高。
http://blog.csdn.net/m1ngmaidb/article/details/44620621
3tcp和udp,一般在做j2ee的web项目的时候直接接触不到(是直接用不到,但是肯定是用到了,是因为好多东西被封装了,对你是透明的,不可见,实际研发编程写Java代码的时候是用不到的接触不到的),是比较低层次的技术,在高级语言编程时(比如Java等),是直接接触不到的。举个例子:
我使用word的技能很高,word的各种功能没有我不会的。但是我关注的就是使用,至于word这个软件是怎么运行的,原理是什么,我根本不知道,也不用知道。我只要知道,在word使用层次上,怎么使用,通过操作word能达到想要的效果就行了。这个和高级语言编程,是一个道理,比如Java。我只要会用Java编程,实现我的目的就行了(比如写一个算法,计算1+2+3+...+100)。至于Java的代码怎么执行,怎么使用内存和cpu,那是Java的事情,我不用去考虑和操心。我虽然不直接接触内存和cpu,但是我绝对不能说我不用内存和cpu,肯定、一定、绝对用到了内存和cpu,只是我在写Java代码的时候,感觉不到他们的存在而已,对我来说是一个黑盒。所以我只关注Java层次,即怎么使用Java这个编程语言就行了,其他的我直接接触不到。
就像一个主机一样,我从外表看,一个黑黑的盒子,但是其实内部在波涛汹涌、马不停蹄的在工作着,只是这一切对我不可见,我也不用去管,我只关注可操作层面,会用就可以了。
所以,我使用的一切工具(如斧头、吹风机、Java等),都是低级工具的组合。比如我使用一个斧头看开一个木头,我只要会使用斧头来砍就行了,至于斧子的材质是什么、为什么能砍开木头(如你用一个纸片肯定砍不开一个木头,这里面就有斧子之所以能砍开木头的原理在里面),我不知道,我耶不用去考虑。那么斧头这一工具,是什么低级工具的组合?答案是:铁。那铁又是什么低级工具的组合?答案是:铁矿石。以此不停往下类推。。。那么斧子的使用者,就只关注斧子使用技术(即怎么砍就行了)。钢铁的冶炼者,就只关注炼铁技术就行了。这不就是Java程序员、汇编程序员的区别吗?
工具都是层层封装,而每一层,都有每一层的使用者,上一层只关注本层,不用管下一层的任何东西。
这就是“技术”的真谛吧。
5socket就是比较实在的技术了,可以说是高级语言这个层次了,如写Java代码、C、C++时,就能直接接触到socket。
https://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html
6socket是比udp、tcp高一级的工具。
结合我上面表格里说的例子,进行理解。
就好比socket是斧子,udp是铜,tcp是铁。斧子可以用铁打造,也可以用铜打造,因此socket有遵守tcp协议的,也有遵守udp协议的。
7socket和udp、tcp的关系?
既然socket可以遵从udp协议,也可以遵从tcp协议,那么深情情况下,socket使用udp协议?什么情况下socket使用tcp协议?
最典型的:
QQ的消息发送是遵从tcp协议的socket;
QQ的视频聊天是遵从udp协议的socket;
因为tcp协议不能丢一丝一毫,udp协议注重实时一致性。
我发送消息,要么100%发送成功,要么100%发送不成功。决不允许,部分成功(如我发送一句话:“我不喜欢你”,却把“不”字丢了,对方收到的是“我喜欢你”,这就很尴尬了,不能容忍,WTF),所以是tcp。
视频聊天,不能延迟,丢画面和声音无所谓,但是一定要保证两边的实时一致性,所以是udp。
8遵从tcp协议的socket通信,代码怎么实现?遵从udp协议的socket通信,代码怎么实现?
https://www.cnblogs.com/hongyanee/p/3288184.html
---
总结,什么是socket?
答案:
1socket就是即时通讯,就是QQ这种。A向B发送消息,B不需要刷新,就能收到对方的消息并显示到界面上。
2socket不能通过j2ee的web项目,达到同样的效果吗?
即不用socket,而是用j2ee的web项目,可以实现即时通讯功能吗?
比如想到的一种方式,实现过程如下:
要求:A向B,发送“hello”。实现:
1)A发起一个http url请求,test/saveInfo,将"hello"存入数据库。
2)B不停地自动刷新(如window.location.reload(true);,用来模拟实时通讯,实时接收消息),发起一个http url请求,test/getInfo,读取数据库,获取“hello”。
但是需要数据库的存在,socket可以没有第三方的存储接入(虽然QQ也写数据库,但是为了用户可以调取历史记录用的,不是实现通讯必须的),就实现A和B的通讯。
3socket和j2ee的web项目最大的不同是,socket没有数据库的概念。
socket没有数据库的概念,不用将数据存储起来,就可以实现信息互相获取。
而j2ee的web项目,必须要将数据存入数据库(就算不用数据库,也得有个能存数据的地方,哪怕是在程序中写死的一个变量,这也是充当着数据库的概念,其实也是数据库的概念),才能实现信息互相获取。
- tcp、udp、socket,关系
- TCP 、UDP和Socket 关系
- SOCKET与TCP,UDP有什么关系?
- HTTP、TCP、UDP、Socket关系详解
- http,tcp,udp,tcp/ip ,socket之间的关系
- (转)TCP、UDP及Socket的关系
- TCP、UDP及Socket(Port)的关系,深入浅出!
- SOCKET,TCP/UDP,HTTP,FTP网络协议之间的关系
- SOCKET,TCP/UDP,HTTP,FTP网络协议之间的关系
- socket与TCP/UDP的关系初步认识
- 网络编程--Socket、TCP/IP、UDP、Http之间的关系
- TCP、UDP、HTTP、Socket、HttpUrlConnection、HttpClient、Volley、OkHttp之间关系
- TCP、UDP及Socket(Port)的关系,深入浅出!
- Android 网络通讯 socket tcp/ip udp http之间的关系
- TCP UDP 及 Socket的关系 端口的分类
- TCP,UDP,HTTP关系
- TCP,UDP,HTPP关系
- socket,tcp,udp
- java学习之接口
- 前端
- mysql 查询去除表中(多个条件确定的一个数据)
- 50585505
- Excel在统计分析中的应用—第八章—假设检验-方差已知下总体均值的单侧检验
- tcp、udp、socket,关系
- 微信开发时 在页面中 window.location.href 不可用问题
- UVA 7261 Xiongnu's Land
- 点播/直播/VR视频播放器研究(2)-Android
- js分页加载更多
- 封装Integer 和int 的对比
- cadence pcb 总结
- 11月24日学习笔记_map/reduct的应用于使用
- H5移动端横竖屏切换监听 副作用——手机整屏状态下安卓机input 问题