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、运行结果
至此实现了自己的测试功能。如果不当之处,欢迎指正!
本文地址:https://blog.csdn.net/r1141207831/article/details/107409392
下一篇: java使用IO流对数组排序实例讲解