zoukankan      html  css  js  c++  java
  • Python UDP编程小示例

    参照着廖雪峰的python教程敲的代码。

    这个示例就是很简单的服务器端直接接收来自客户端的数据,然后稍作处理返回给客户端;客户端给服务器端发送数据然后将接收到的返回数据打印。

    UDPServer.py:

    # -*- coding: utf-8 -*-
    import socket
    
    #SOCK_DGRAM指定了这个Socket的类型是UDP 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    #绑定端口
    s.bind(('127.0.0.1', 9999))
    #不需要调用listen()方法,而是直接接收来自任何客户端的数据
    
    print('Bind UDP on 9999....')
    while True:
        #接收数据
        data, addr = s.recvfrom(1024) #recvfrom()方法返回数据和客户端的地址与端口
        print('Received from %s:%s.' % addr)
        if data == b'exit':
            s.close()   #如果不关掉socket,则下次运行程序会报端口已被占用
            break
        else:
            s.sendto(b'Hello, %s!' % data, addr)
    

    UDPClient.py:

    # -*- coding: utf-8 -*-
    
    import socket
    
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    for data in [b'Michael', b'Tracy', b'Sarah', b'exit']:
        #发送数据
        s.sendto(data, ('127.0.0.1', 9999))
        
        #接收数据
        print(s.recv(1024).decode('utf-8'))
        
    s.close()


    因为UDP是面向非连接的,所以比TCP编程少了“建立连接(客户端发起服务器端接受)和监听端口(客户端)”的步骤,并且接收数据和发送数据所使用的数据也不一样。

    运行结果:

    服务器端:


    客户端:





  • 相关阅读:
    【洛谷P3628】特别行动队
    【洛谷P3233】世界树
    【BZOJ1597】土地购买
    【洛谷P4068】数字配对
    【洛谷P3899】谈笑风生
    【BZOJ2726】任务安排
    【洛谷P6186】[NOI Online 提高组] 冒泡排序
    【洛谷P3369】【模板】普通平衡树
    【UOJ#8】Quine
    标准 插入flash
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586421.html
Copyright © 2011-2022 走看看