博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UDP/TCP通信小记
阅读量:6772 次
发布时间:2019-06-26

本文共 838 字,大约阅读时间需要 2 分钟。

TCP 和UDP的区别

TCP是面向连接的; 

所谓连接   就是 打开的时候要握手,收发数据的时候要确认(传说中的窗口协议保持滑动过去的窗口都已成功发送,接收方已经成功接收)。

UDP是无连接的。

所谓无连接  就是  打开连接无需握手, 收发数据无需确认, 发送方只管发,接收方只管收。

 

具体到编程过程中,无论是有连接还是无连接 这些都是操作系统帮我们实现的协议细节,

我们编程的时候只需要 打开一个TCP/UDP的缓冲区,然后从这个缓冲区发送和接受数据。

TCP/UDP  打开, 发送, 接受 这几个过程 在具体编程中又有了相应区别

TCP打开必须要三次握手,也就是确实和对方取得了联系, 这个scoket缓冲区才是建立起来了,然后你才可以收发数据, 发送的时候其实就是把内容放到缓冲区,操作系统替你发送出去, 如果发送失败, TCP协议有他自己的滑动窗口, 保证你提交的数据都成功发送。

另外TCP服务端有些特殊, 服务器端监听的端口监听到有通信请求,需要再创建一个专门通信的TCP端口进行通信,这就是有时候服务器端连接数会爆掉的原因。

UDP就不一样了, 因为是无连接的,不需要握手, 因此直接打开就行了,有可能对方都没有监听对应的端口,这个socket也是可以成功建立的,发送信息也不会报错。

 

关于数据库长连接、短连接

长连接或者短连接 其实是刻意认为制定的, 不管TCP还是UDP都是一次打开,通信,关闭的过程, 没有长短这一说, 一般短连接就是 打开,通信一次,关闭  长连接就是打开  多次通信 甚至只要不出事故就一直通信  然后关闭的状态。  值得提醒的是长连接会 粘包 拆包 , 因为你可能某一次发送的数据特别大,被放置到下一个缓存区了, 由于长连接没有close 所以 服务器端没有办法通过feof来判断数据是否结束, 所以必须引入协议头来解决包与包之间的分界。  

转载于:https://www.cnblogs.com/sailrancho/p/4128957.html

你可能感兴趣的文章
第3章 基本数据类型
查看>>
Codeforces Round #327 (Div. 2) B. Rebranding C. Median Smoothing
查看>>
Linux Shell之七 函数应用
查看>>
通过virt工具安装管理KVM虚拟机
查看>>
js中我的注释规范
查看>>
Oracle Study之-Oracle 11g OCM考试(2)
查看>>
查看实时公网ip
查看>>
OpenSolaris/Solaris中文FAQ
查看>>
git切换到远程分支
查看>>
VMware无法与物理机连通Could not connect Ethernet0 to virtual network "VMnet8"完美解决
查看>>
Linux下如何使用虚拟用户增加FTP的安全性
查看>>
为了学习WinCE嵌入式编程,又开始学起了MFC
查看>>
[RHEL5企业级Linux服务攻略]--第2季 Samba服务全攻略
查看>>
JSP和ASP.NET到底谁才是未来的主宰
查看>>
Goldengate双向复制配置
查看>>
加速物联网业务发展 英特尔有意收购Altera
查看>>
“预知能力的超人” 细数威胁情报那些事儿
查看>>
物联网推动CRM创造新型服务
查看>>
你信隔空取物吗?你以为不插网线就安全吗?DiskFiltration可以突破物理隔绝窃取数据...
查看>>
单盘随机读IOPS超百万、容量11TB SSD诞生---PBlaze5 PCIe NVMe SSD
查看>>