zoukankan      html  css  js  c++  java
  • python3--udp/TCP笔记和实践

    UDP协议:

    UDP (User Datagram Protocol, 用户数据报协议) 是一种无连接,不可靠,基于数据的传输层通信协议。

    UDP的通信过程与TCP相比比较为简单, 不需要复杂的三次握手四次挥手,提现了无连接;

    UDP传输速度比TCP快, 但容易丢包,数据到达准确性无保证, 缺乏拥塞控制, 秉承尽最大努力交付的远着,提现了不可靠;

    UDP的无连接与不可靠特性注定无法采用字节流的通信模式,由协议名中[Datagram] 与socket类型中的[SOCK_DGRAM]即可提现他基于数据报的通信模式。

    #服务端
    import socket
    
    #第一个参数为 socket.AF_INET,代表采用 IPv4 协议用于网络通信,
    # 第二个参数为 socket.SOCK_DGRAM,代表采用 UDP 协议用于无连接的网络通信。
    soc = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #服务端才需要绑定IP和端口
    soc.bind("127.0.0.1",6000)
    
    print("udp bound on port 6000")
    
    
    while True:
        data, addr = soc.recvfrom("1024")
        print("receive:%s %s"%(addr, data))
    
        if data == b"exit":
            soc.sendto(b"goodbye", addr)
            continue
        soc.sendto(b"hello %s "% data,addr)
    soc.close()
    #客户端
    sclient = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    addr = ("127.0.0.1",6000)
    
    while True:
        data = input("please enter a word:")
        if not data:
            continue
        sclient.sendto(data.encode(), addr)
        responese, addr = sclient.recvfrom(1024)
        print(responese.decode)
        if responese == b'exit':
            print("sesion is over from %s : %s"%addr)
            breakpoint()
    
    sclient.close()

     非常详细的UDP解析,来自:

    https://www.freebuf.com/column/175176.html

  • 相关阅读:
    【GO】GO开发环境安装及VS Code配置
    【计算机组成原理】第一章 计算机系统概论
    oracle 12.2新特性:sqlplus history
    取消交互式创建linux用户密码
    undo表空间收缩
    如何对undo表空间大小进行设置
    查看数据库实际使用多大内存
    Oracle 12.2Cgrid脚本安装失败软件完全删除
    有关rman备份ora-27192和ora-19511错误
    数据库altert日志中的GTX提示
  • 原文地址:https://www.cnblogs.com/shoebill/p/10801134.html
Copyright © 2011-2022 走看看