zoukankan      html  css  js  c++  java
  • 网络编程: 基于UDP协议的socket

    udp是无链接的,启动服务之后可以直接接受消息不需要提前建立链接

    UDP协议的通信优势:

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

    TCP不行

    服务端

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1', 8888))
    
    while 1:
        # 接收
    
        msg_r, addr = sk.recvfrom(1024)
        str_msg = msg_r.decode('utf-8')
        if str_msg == 'q':
            continue
        else:
            # 用':'分割字符串一次 变成列表
            lis = str_msg.split(':', 1)
            # 姓名
            na = lis[0].strip()
            # 信息
            info = lis[1].strip()
            print('33[1;37;40m' + na + ':33[0m' + info)
    
        # 发送
        msg_s = input('我:')
        if msg_s != 'q':
            sk.sendto(msg_s.encode('utf-8'), addr)
        else:
            sk.sendto(msg_s.encode('utf-8'), addr)
            break
    
    
    sk.close()
    

    客户端

    import socket
    name = input('请输入你的姓名:
    ')
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    while 1:
        # 发送
        msg_s = input('>>>')
        if msg_s != 'q':
            sk.sendto((name +':'+ msg_s).encode('utf-8'),('127.0.0.1',8888))
        else:
            sk.sendto((msg_s).encode('utf-8'),('127.0.0.1',8888))
            break
    
        # 接收
        msg_r,addr = sk.recvfrom(1024)
        if msg_r.decode('utf-8') == 'q':
            break
        else:
            print(msg_r.decode('utf-8'))
    
  • 相关阅读:
    DOCTYPE
    js——类型转换
    对象Object
    Array数组
    es6学习笔记
    springboot第一个项目【mybatis】
    springboot第一个项目【创建】
    项目管理和流程的拙见
    树莓派 Zero作为飞控图传
    一根数据线玩转树莓派Zero
  • 原文地址:https://www.cnblogs.com/niuli1987/p/9470035.html
Copyright © 2011-2022 走看看