• 网络编程UDP


    UDP协议的通信优势:

     允许一个服务器同时和多个客户端通信,TCP不行

    服务器
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",9999))
    conn,addr=sk.recvfrom(1024)
    print(conn.decode("utf-8"))
    print(addr)
    sk.close()
     客户端
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    content=input(">>>")
    sk.sendto(content.encode("utf-8"),("127.0.0.1",9999))
    sk.close()
     

    一个服务器同时与多个客户聊天

    服务器
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",9999))
    while 1:
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
        content=input(">>>")
        sk.sendto(content.encode("utf-8"),addr)
    sk.close()
    客户端
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    while 1:
        content=input(">>>")
        sk.sendto(content.encode("utf-8"),("192.168.12.63",8090))
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
    sk.close()

    署名聊天

    服务器
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",8888))
    while 1:
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
        content=input(">>>")
        sk.sendto(content.encode("utf-8"),addr)
    sk.close()
    客户端
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    name=input("请输入你的名字:")
    while 1:
        content=input(">>>")
        use_name=name+":"+content
        sk.sendto(use_name.encode("utf-8"),("127.0.0.1",8888))
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
    sk.close()

    pycharm输出带颜色:

     33[字体颜色;背景颜色m   数据   33[0m

    字体加颜色和背景色
    print("abc")
    print("33[32m abc 33[0m")
    print("33[32;40m abc 33[0m")
    #格式:
      设置颜色开始 :33[显示方式;前景色;背景色m
    #说明:
    前景色            背景色           颜色
    ---------------------------------------
                   40              黑色
                   41              红色
                   42              绿色
                   43              黃色
                   44              蓝色
                   45              紫红色
                   46              青蓝色
                   47              白色
    显示方式           意义
    -------------------------
                   终端默认设置
                   高亮显示
                   使用下划线
                   闪烁
                   反白显示
                   不可见
     
    #例子:
    33[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
    033[0m          <!--采用终端默认设置,即取消颜色设置-->
    
    
    print('33[0;32;40m欢迎使用学生选课系统33[0m')
    try:
        num = int(input('请输入数字选择功能 :'))
    except Exception as e:
        print('33[31m对不起!您输入的内容有误~33[0m')
    print('33[0;36m爆竹声中一岁除,')
    print('春风送暖入屠苏。')
    print('千门万户曈曈日,')
    print('总把新桃换旧符。33[0m')

    结果:



    字体加颜色通信
    服务器
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",6666))
    dic={"小明":"33[32m","小红":"33[33m","小李":"33[35m"}
    while 1:
        conn,addr=sk.recvfrom(1024)
        conn=conn.decode("utf-8")
        name=conn.split(":")[0].strip()
        color=dic.get(name,'')
        print('%s %s 33[0m' % (color,conn))
        content=input(">>>")
        sk.sendto(content.encode("utf-8"),addr)
    sk.close()
    客户端
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    name=input("请输入你的名字:")
    while 1:
        content=input(">>>")
        use_name=name+":"+content
        sk.sendto(use_name.encode("utf-8"),("127.0.0.1",6666))
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
    sk.close()
    字体带颜色加退出逻辑
    服务器
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",6666))
    dic={"小明":"33[32m","小红":"33[33m","小李":"33[35m"}
    while 1:
        conn,addr = sk.recvfrom(1024)
        conn = conn.decode("utf-8")
        name = conn.split(":")[0].strip()
        color = dic.get(name,'')
        print('%s %s 33[0m' % (color,conn))
        if conn.split(":")[1] == "q":
            break
        content = input(">>>")
        sk.sendto(content.encode("utf-8"),addr)
        if content == "q":
            break
    sk.close()
    客户端
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    name=input("请输入你的名字:")
    while 1:
        content=input(">>>")
        use_name=name+":"+content
        sk.sendto(use_name.encode("utf-8"),("127.0.0.1",6666))
        if content == "q":
            break
        conn,addr=sk.recvfrom(1024)
        print(conn.decode("utf-8"),addr)
        if conn.decode("utf-8") == "q":
            break
    sk.close()
    
    
    
     
    
    
    
  • 相关阅读:
    return关键字
    类的成员之二 :方法
    面向对象(一)
    正则表达式(一)
    Linux FTP服务器vsftpd介绍与软件包安装
    Linux SSH
    Linux telnet
    Linux firewalld
    Linux iptables nat表的使用
    Linux iptables规则的基本使用
  • 原文地址:https://www.cnblogs.com/chenyibai/p/9468066.html
Copyright © 2020-2023  润新知