zoukankan      html  css  js  c++  java
  • UDP/TCP通信小记

    TCP 和UDP的区别

    TCP是面向连接的; 

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

    UDP是无连接的。

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Python 荣登 TIOBE 2020 年度编程语言
    火了!开源的Python抢票神器,过年回家就看这一波了!
    教你怎么用 Python 自动整理文件
    来自程序员的圣诞节浪漫-用Python画一棵带音乐的雪夜圣诞树
    用Python 绘制一个只属于你自己的世界地图
    Python黑科技:暴力破解,你的密码真的安全么?
    小白必读!十大被低估的Python自带库!
    MyEclipse提示MyEclipse Trial Expired(试用期过),破解方法
    转发和重定向的区别
    request内置对象
  • 原文地址:https://www.cnblogs.com/sailrancho/p/4128957.html
Copyright © 2011-2022 走看看