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编程少了“建立连接(客户端发起服务器端接受)和监听端口(客户端)”的步骤,并且接收数据和发送数据所使用的数据也不一样。

    运行结果:

    服务器端:


    客户端:





  • 相关阅读:
    maven将依赖依赖打包到jar中
    Python模块之信号(signal)
    mog使用指南
    Docker 入门
    注册码
    区块链Readme.md
    彻底卸载 postgreSQL .etc
    Django
    111
    pip 安装 lxml等 出错 解决
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586421.html
Copyright © 2011-2022 走看看