zoukankan      html  css  js  c++  java
  • TCP协议与UDP协议

    TCP协议

    • 类似于打电话(代码实现见上一章节)

    • 特点:可靠 、慢、全双工通信

    • 建立连接的时候:三次握手:syn ack

    • 断开连接的时候:四次挥手:fin ack

    • 区别:

    • 三次握手把一个回复和请求连接的两条信息合并成一条了
      -由于乙方断开连接之后,可能另一方还有数据没有传递完,所以不能立即断开,所以回收的时候不能合并信息

    • 在建立起连接之后

      • 发送的每一条信息都有回执
      • 为了保证数据的完整性,还有重传机制
    • 长链接:会一直占用双方的端口

    • IO(input,output)操作,输入和输出是相对内存来说的

      • write/send ——> output
      • read/recv ——> input话
    • 特点:可靠 、慢、全双工通信

    • 建立连接的时候:三次握手

    • 断开连接的时候:四次挥手

    • 在建立起连接之后

      • 发送的每一条信息都有回执
      • 为了保证数据的完整性,还有重传机制
    • 长链接:会一直占用双方的端口

    • IO(input,output)操作,输入和输出是相对内存来说的

      • write/send ——> output
      • read/recv ——> input

    UDP协议

    • 类似于发短信
    • 无连接 速度快
    • 可能会丢失消息

    应用场景

    • TCP 文件的上传下载(发送邮件、网盘、缓存电影)、保证数据的可靠,高清电影的下载
      • 能够传递的数据几乎没有限制
    • UDP 及时通信类(qq、微信、飞秋),在线观看视频
      • 能够传递的数据的长度是有限的,是根据传递设备的设置有关系(路由器的最小字节)

    带身份带颜色变换的无限多用户通讯

    #sever端
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)#起了个udp协议
    sk.bind(("127.0.0.1",9000))
    while True:
        msg,client_addr = sk.recvfrom(1024) #需要知道通信地址
        print(msg.decode("utf-8"))      #收完后解码
        msg = input(">>>").encode("utf-8")
        sk.sendto(msg,client_addr)      #按照其通信地址发送信息
    sk.close()
    
    #client1端
    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    while True:
        inp = input(">>>").encode("utf-8")
        sk.sendto(inp,("127.0.0.1",9000)) #发
        ret = sk.recv(1024)               #收
        print(ret.decode("utf-8"))
    sk.close()
    
    
    #client2端
    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    while True:
        inp = input(">>>").encode("utf-8")
        sk.sendto(inp,("127.0.0.1",9000))
        ret = sk.recv(1024)
        print(ret.decode("utf-8"))
    sk.close()
    
    记录学习的点点滴滴
  • 相关阅读:
    AutoCAD.Net/C#.Net QQ群:193522571 resultbuffer 中的typedvalue
    AutoCAD.Net/C#.Net QQ群:193522571 32位进程无法访问64位进程模块,解决getprocesses方法对32位无效的问题
    AutoCAD.Net/C#.Net QQ群:193522571 随机数
    AutoCAD.Net/C#.Net QQ群:193522571:取得当前方法名、父方法名
    每次打开office2007都会弹出安装autocad2007,如何解决?
    在自定义控件中,定义枚举类型需要使其首项默认值为0
    VS整死了,属性惹的祸
    委托的使用,排序
    为C#自定义控件添加自定义事件
    C#获取字符串宽度像素
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/14841805.html
Copyright © 2011-2022 走看看