python socket传输图片_python使用socket传输图片视频等文件的实现方式

python使用socket传输图片视频等文件的实现方式

来源:中文源码网    浏览: 次    日期:2019年11月5日

【下载文档:  python使用socket传输图片视频等文件的实现方式.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

python 使用socket传输图片视频等文件的实现方式在开发一些需要网络通信的应用中,经常会用到各种网络协议进行通信,博主在开发实验室的机器人的时候就遇到了需要把机器人上采集到的图片传回服务器进行处理识别,在python下的实现方式如下(只贴出了关键代码)

服务器端

LOCAL_IP = '192.168.100.22' #本机在局域网中的地址,或者写127.0.0.1

PORT = 2567 #指定一个端口

def server():

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # socket.AF_INET 指ipv4 socket.SOCK_STREAM 使用tcp协议

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #设置端口

sock.bind((LOCAL_IP, PORT)) #绑定端口

sock.listen(3) #监听端口

while True:

sc,sc_name = sock.accept() #当有请求到指定端口是 accpte()会返回一个新的socket和对方主机的(ip,port)

print('收到{}请求'.format(sc_name))

infor = sc.recv(1024) #首先接收一段数据,这段数据包含文件的长度和文件的名字,使用|分隔,具体规则可以在客户端自己指定

length,file_name = infor.decode().split('|')

if length and file_name:

newfile = open('image/'+str(random.randint(1,10000))+'.jpg','wb') #这里可以使用从客户端解析出来的文件名

print('length {},filename {}'.format(length,file_name))

sc.send(b'ok') #表示收到文件长度和文件名

file = b''

total = int(length)

get = 0

while get < total: #接收文件

data = sc.recv(1024)

file += data

get = get + len(data)

print('应该接收{},实际接收{}'.format(length,len(file)))

if file:

print('acturally length:{}'.format(len(file)))

newfile.write(file[:])

newfile.close()

sc.send(b'copy') #告诉完整的收到文件了

sc.close()客户端

address = ('192.168.100.22', 2567)

def send(photos):

for photo in photos[0]:

print('sending {}'.format(photo))

data = file_deal(photo)

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(address)

sock.send('{}|{}'.format(len(data), file).encode()) #默认编码 utf-8,发送文件长度和文件名

reply = sock.recv(1024)

if 'ok' == reply.decode(): #确认一下服务器get到文件长度和文件名数据

go = 0

total = len(data)

while go < total: #发送文件

data_to_send = data[go:go + 1024]

sock.send(data_to_send)

go += len(data_to_send)

reply = sock.recv(1024)

if 'copy' == reply.decode():

print('{} send successfully'.format(photo))

sock.close() #由于tcp是以流的形式传输数据,我们无法判断开头和结尾,简单的方法是没传送一个文件,就使用一个socket,但是这样是消耗计算机的资源,博主正在探索更好的方法,有机会交流一下

def file_deal(file_path): #读取文件的方法

mes = b''

try:

file = open(file_path,'rb')

mes = file.read()

except:

print('error{}'.format(file_path))

else:

file.close()

return mes总结

以上所述是小编给大家介绍的python 使用socket传输图片视频等文件的实现方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对中文源码网网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

亲,试试微信扫码分享本页! *^_^*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium - Select类 - 下拉框

WebDriver提供了Select类来处理下拉框。 如百度搜索设置的下拉框&#xff0c;如下图&#xff1a; from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleepdriver webdriver.Chrome() driver.implicitly_wait(10) drive…

ubuntu安装samba

1 首先当然是要安装samba了&#xff1a;sudo apt-get install sambasudo apt-get install smbfs 2 下面我们来共享群组可读写文件夹&#xff0c;假设你要共享的文件夹为&#xff1a; /home/ray/sharemkdir /home/ray/sharechmod 777 /home/ray/share 备份并编辑smb.conf允许网络…

.NET 7 预览版 7

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;12分钟)今天我们发布了 .NET 7 预览版 7。这是 .NET 7 的最后一个预览版&#xff0c;下一个版本将是我们的第一个候选版本 &#xff08;RC&#xff09;。.NET Conf 2022 的日期已经公布&#xff01;请于 2022 年 11 月…

QWaiteCondition思考3

QWaitConditioin::wait() 接收一个mutex作为参数&#xff0c;这个mutex应该被调用线程初始化为锁定状态。在线程进入休眠状态&#xff08;waite&#xff09;之前&#xff0c;mutex会被解锁。当线程被唤醒&#xff08;WakeOne/wakeAll)时&#xff0c;mutex会处于锁定状态。而且&…

python实现定时任务的方式_Python实现定时执行任务的三种方式简单示例

本文实例讲述了Python实现定时执行任务的三种方式。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1.定时任务代码#!/user/bin/env python# Time :2018/6/7 16:31# Author :PGIDYSQ[email protected] :PerformTaskTimer.py#定时执行任务命令import time,os,schedschedu…

js 获取data-属性值

// html code <span class"1pc_price" data-price"<?php echo Country::change($29.95,$money_type) . "<br/>Download Instantly"; ?>"></span>// js codevar price_1pc_hb document.getElementsByClassName(1pc_p…

android--------volley之网络请求和图片加载

为什么80%的码农都做不了架构师&#xff1f;>>> Volley是 Google 推出的 Android 异步网络请求框架和图片加载框架。 Volley的特性 封装了的异步的请求API。Volley 中大多是基于接口的设计&#xff0c;可配置性强。一个优雅和稳健的请求队列&#xff0c;一定程度符…

经典算法学习——冒泡排序

冒泡排序是我们学习的第一种排序算法。应该也算是最简单、最经常使用的排序算法了。无论怎么说。学会它是必定的。今天我们就用C语言来实现该算法。演示样例代码已经上传至&#xff1a;https://github.com/chenyufeng1991/BubbleSort算法描写叙述例如以下&#xff1a;&#xff…

Mybatis之设计模式之装饰者模式

了解&#xff0c;什么是装饰者模式? 1.定义 装饰模式是在不必改变原类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的功能。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实的对象。 2.特点 1 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真…

python求非线性优化问题_用python优化非线性函数

我在python中有一个函数&#xff0c;如下所示&#xff1a;import numpy as npdef fun(Gp,Ra,Mr,Pot,Sp,Mc,Keep):if(KeepTrue):return(Pot*np.tanh((GpRaMr Mc)*Sp ))假设以下数据&#xff1a;^{2}$我总共有100个GP&#xff0c;我想适当地分配它们为了最大化objective_function…

一天掌握Android JNI本地编程 快速入门

一、JNI&#xff08;Java Native Interface&#xff09; 1、什么是JNI&#xff1a;JNI(Java Native Interface):java本地开发接口JNI是一个协议&#xff0c;这个协议用来沟通java代码和外部的本地代码(c/c) 外部的c/c代码也可以调用java代码2、为什么使用JNI&#xff1a;效率上…

轻量级ORM框架PetaPoco

1、简介PetaPoco是一个小型、快速、单文件的微型ORM&#xff08;Object Relational Mapper&#xff09;框架&#xff0c;可在.NET和Mono环境运行。https://github.com/CollaboratingPlatypus/PetaPoco2、特点PetaPoco 是一个用于 .NET 的小型且快速的微型 ORM与Dapper一样&…

[转]CentOS 7忘记root密码解决办法

转自&#xff1a;http://www.linuxidc.com/Linux/2016-08/134034.htm 亲测可用&#xff01; CentOS 7 root密码的重置方式和CentOS 6完全不一样&#xff0c;CentOS 7与之前的版本6变化还是比较大的&#xff0c;以进入单用户模式修改root密码为例。 1.重启开机按esc 2.按e 3.编…

美链BEC合约漏洞技术分析

这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈。这篇文章就来分析下BEC智能合约的漏洞 <!-- more --> 漏洞攻击交易 我们先来还原下攻击交易&#xff0c;这个交易可以在这个链接查询到。我截图给大家看一下&#xff1a; 攻击者向两个账号转…

vue 公众号扫描_vue编写微信公众号打开相机功能

vue编写微信公众号打开相机功能&#xff0c;什么都不多说直接上代码页面布局代码class"previewer-demo-img":key"index":src"item.src"width"100"click"previewImg(index)">1.微信config初始化前端代码initWxConfig() {l…

SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)

前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能&#xff0c;简短的内容&#xff0c;深入的理解&#xff0c;Always to review the basics。 NOT IN、NOT EXISTS、LEFT JOIN...IS NULL性能分析 我们首先创建测试表 USE TSQL2012 GOCREATE SCHEMA [c…

global using 的另类用法

前言global using 指令在 C# 10 中被引入&#xff0c;意味着 using 将应用于编译中的所有文件&#xff08;通常是一个项目&#xff09;。比如&#xff1a;global using System.Text;则在同一项目的其他位置&#xff0c;可以直接使用 System.Text 下的所有类型而无需再次声明 us…

boost asio resolver

asio 中的resolver一般用于将host等信息转化为socket信息&#xff0c;类似于getaddrinfo() 以下代码 boost::asio::io_service io;tcp::resolver resolver(io);tcp::resolver::query query(boost::asio::ip::host_name(), "80");tcp::resolver::iterator endpoint_it…

利用 Node.js 实现 SAP Hana 数据库编程接口

为什么80%的码农都做不了架构师&#xff1f;>>> 自 SAP HANA SP 11 之后&#xff0c;可以使用 Node.js 作为 Hana 的编程接口。SAP 将 Application server 简称为 XS。现在 XS 已经演化为 Advanced 版本。为了区别&#xff0c;早期的 XS 被称为 XS Classical。 从下…

WPF 实现自绘验证码

WPF 实现自绘验证码控件名&#xff1a;VerifyCode作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff1b;如何通过DrawingV…