欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 使用 UDP方式传输接收数据

程序员文章站 2022-03-28 22:33:21
前言:由于在项目中需要使用UDP进行通信,经过学习查找资料实现了在同一台电脑上自发自收功能,现在分享代码如下,如有问题,欢迎指正。此代码亦可以延伸其他功能。运行系统:Ubuntu18.04运行环境:python3.6.91、自动获取本地IP地址def GetHostIP(): try: Socke = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) Socke.connect(('8.8.8.8',...

前言:由于在项目中需要使用UDP进行通信,经过学习查找资料实现了在同一台电脑上自发自收功能,现在分享代码如下,如有问题,欢迎指正。此代码亦可以延伸其他功能。


运行系统:Ubuntu18.04

运行环境:python3.6.9


1、自动获取本地IP地址

def GetHostIP():
    try:
        Socke = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        Socke.connect(('8.8.8.8', 80))
        IP = Socke.getsockname()[0]
    finally:
        Socke.close()

    print(IP)
    return IP

2、发送数据端

def send_data():
    IP_daar = GetHostIP()
    while True:
        # 1. 创建udp套接字
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        # 2. 准备接收方的地址        
        dest_addr = (IP_daar, 8080)  # 注意 是元组,ip是字符串,端口是数字

        # 3. 从键盘获取数据
        send_data = b'\x08\x00\x00\x00\x81@\x02\x00\x1d\x00\x00\x00\x10'
        # send_data = input("请输入要发送的数据:")

        # 4. 发送数据到指定的电脑上的指定程序中
        udp_socket.sendto(send_data, dest_addr)
        print("发送给客户端 %s 的数据: %s\n" % (dest_addr, send_data))
        sleep(1)

        # 5. 关闭套接字
        udp_socket.close()

3、数据接收端

def receive_data():
    IP_daar = GetHostIP()

    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 2. 准备接收方的地址
    dest_addr = (IP_daar, 8080)

    # 3. 绑定地址
    udp_socket.bind(dest_addr)

    while True:
        # 4. 等待接收对方发送的数据
        receive_data, client_address = udp_socket.recvfrom(1024)
        print("接收到了客户端 %s 传来的数据: %s\n" % (client_address, receive_data))

    # 5. 关闭套接字
    udp_socket.close()

4、主函数

import socket
from threading import Thread
from time import sleep


# 此处添加上述三个函数即可


if __name__ == '__main__':    
    t = Thread(target=send_data)
    t.start()
    while True:
        receive_data()

5、运行结果

Python 使用 UDP方式传输接收数据


至此实现了自己的测试功能。如果不当之处,欢迎指正!

本文地址:https://blog.csdn.net/r1141207831/article/details/107409392