网络编程: 基于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('\033[1;37;40m' + na + ':\033[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('请输入你的姓名:\n')
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'))

猜你喜欢

转载自www.cnblogs.com/niuli1987/p/9470035.html