百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

50.Python——基于UDP的实现网络图像发送和接收

ztj100 2024-11-27 23:33 18 浏览 0 评论

在上一篇文中,演示了如何在Python中使用UDP来建立服务端和客户端程序,并且相互通讯,具体实现过程参看:49.Python——UDP的服务器与客户端的使用

本文通过一个如何实现图像文件的发送和接收进一步理解和体会UDP是如何工作和使用的。

这里有一个重要注意:就是在网络传输发送接收数据是以bytes进行。而不是string。如果是字符串,则需要用encode编码。

有关图像的编码解码,可以参看:12.图像编码解码-imencode-imdecode-base64

实现目的:把服务端上的一张小狗图片,发送到客户端,打开并且保存到客户端。

一、UDP服务端实现

import socket,time
import cv2
#第二参数:socket.SOCK_DGRAM代表UDP
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定服务器主机和端口,如果主机为空,表示任意主机。
s.bind(("",8888))
print("服务器准备就绪,等待客户端连接...")
img=cv2.imread("dog.jpg") #读取服务端的小狗图片
img_encode=cv2.imencode(".jpg",img)[1] #图像编码
byte_encode=img_encode.tobytes() #图像编码转成bytes,用于网络传输

#循环发送
while 1:
    data,address=s.recvfrom(1024*1024) #接收客户端发送的数据
    print("来自UDP Client 的发送信息:",repr(data.decode()))
    #把图像编码bytes数据发送到客户端
    s.sendto(byte_encode,address)
    time.sleep(1) 
   

二、客户端实现

import socket
import cv2
import numpy as np
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
msg="连接中..."
HOST="192.168.1.1" #这里是服务端的IP地址,根据实际情况填写
PORT=8888  #连接服务端的端口,根据实际情况填写
#发起连接
s.sendto(msg.encode(),(HOST,PORT))
data,address=s.recvfrom(1024*1204)   #接收服务器端发送的数据
print(len(data))
#把接收到的图像编码bytes数据进行解码
nparray=np.frombuffer(data,np.uint8)
img_decode=cv2.imdecode(nparray,cv2.IMREAD_COLOR)
print(img_decode.shape)
#保存图片文件到本地
cv2.imwrite("dog.jpg",img_decode)
#显示图片
cv2.imshow("img",img_decode)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、运行测试

相关推荐

Whoosh,纯python编写轻量级搜索工具

引言在许多应用程序中,搜索功能是至关重要的。Whoosh是一个纯Python编写的轻量级搜索引擎库,可以帮助我们快速构建搜索功能。无论是在网站、博客还是本地应用程序中,Whoosh都能提供高效的全文搜...

如何用Python实现二分搜索算法(python二分法查找代码)

如何用Python实现二分搜索算法二分搜索(BinarySearch)是一种高效的查找算法,适用于在有序数组中快速定位目标值。其核心思想是通过不断缩小搜索范围,每次将问题规模减半,时间复杂度为(O...

路径扫描 -- dirsearch(路径查找器怎么使用)

外表干净是尊重别人,内心干净是尊重自己,干净,在今天这个时代,应该是一种极高的赞美和珍贵。。。----网易云热评一、软件介绍Dirsearch是一种命令行工具,可以强制获取web服务器中的目录和文件...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。...

从零开始学习 Python!2《进阶知识》 Python进阶之路

欢迎来到Python学习的进阶篇章!如果你说已经掌握了基础语法,那么这篇就是你开启高手之路的大门。我们将一起探讨面向对象编程...

白帽黑客如何通过dirsearch脚本工具扫描和收集网站敏感文件

一、背景介绍...

Python之txt数据预定替换word预定义定位标记生成word报告(四)

续接Python之txt数据预定替换word预定义定位标记生成word报告(一)https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=748...

假期苦短,我用Python!这有个自动回复拜年信息的小程序

...

Python——字符串和正则表达式中的反斜杠('\')问题详解

在本篇文章里小编给大家整理的是关于Python字符串和正则表达式中的反斜杠('\')问题以及相关知识点,有需要的朋友们可以学习下。在Python普通字符串中在Python中,我们用'\'来转义某些普通...

Python re模块:正则表达式综合指南

Python...

Python中re模块详解(rem python)

在《...

python之re模块(python re模块sub)

re模块一.re模块的介绍1.什么是正则表达式"定义:正则表达式是一种对字符和特殊字符操作的一种逻辑公式,从特定的字符中,用正则表达字符来过滤的逻辑。(也是一种文本模式;)2、正则表达式可以帮助我们...

MySQL、PostgreSQL、SQL Server 数据库导入导出实操全解

在数字化时代,数据是关键资产,数据库的导入导出操作则是连接数据与应用场景的桥梁。以下是常见数据库导入导出的实用方法及代码,包含更多细节和特殊情况处理,助你应对各种实际场景。一、MySQL数据库...

Zabbix监控系统系列之六:监控 mysql

zabbix监控mysql1、监控规划在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要对Zabbix很了解,这里只是...

mysql系列之一文详解Navicat工具的使用(二)

本章内容是系列内容的第二部分,主要介绍Navicat工具的使用。若查看第一部分请见:...

取消回复欢迎 发表评论: