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'))
    
  • 相关阅读:
    uva299 Train Swapping
    uva 10106 Product
    uva 340 MasterMind Hints
    uva 10115 Automatic Editing
    uva748 Exponentiation
    uva152 Tree's a Crowd
    uva 10420 List of Conquests
    uva 644 Immediate Decodability
    要知其所以然的学习(转载)
    持有书籍统计
  • 原文地址:https://www.cnblogs.com/niuli1987/p/9470035.html
Copyright © 2011-2022 走看看