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传输图片视频等文件的实现方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对中文源码网网站的支持!

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

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

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

  1. python的socket模块_python模块:socket模块

    1.Socket类型 socket(family,type[,protocal])     使用给定的地址族,套接字类型,协议编号(默认是0)来创建套接字 socket类型 描述 socket.AF_ ...

  2. python进程socket通信_python之socket初识

    本篇文章主要讲的是 socket基本操作.包括 网络通信三要素.TCP三次握手以及socket通信流程等.希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步! 01:OSI模型 1) ...

  3. python 远程控制摄像头_Python设置Socket代理及实现远程摄像头控制的例子

    为了python设置socket代理,首先,你得下载SocksiPy这个.解压出来之后里面会有一个socks.py文件.然后你可以把这个文件复制到python安装目录里面的Lib\site-packa ...

  4. python socket 域名_python用socket发送http请求

    python用socket发送http请求 平时我们使用浏览器浏览web资源,写爬虫的时候,我们会使用封装好的库,比如requests,或者使用爬虫框架.工欲善其事必先利其器,顶层封装好的东西,是为了 ...

  5. python socket客户端_python 使用socket模拟tcp客户端和tcp服务器端

    ''' 客户端代码 ''' import socket #创建套接字 tcpClientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREA ...

  6. python自动化教程_Python自动化开发实战视频课程-全新基础篇_Python教程

    教程名称:Python自动化开发实战视频课程-全新基础篇 课程目录: 0001.51CTO学院-01Pythons10 day1 开课前言- _* N, R+ w/ T 0001.51CTO学院-01 ...

  7. python 视频播放 拖动_python + opencv鼠标拖动视频区域裁剪

    # -*- coding: utf-8 -*- import sys import cv2 import numpyas np import time import sys # # from PyQt ...

  8. python分发包_Python 分发包中添加额外文件的方法

    在制作一个 Python 分发包时经常需要把一些文件添加到包中.最常见的例子是你希望通过 pip install命令安装 Python 包时会在 /etc/ 等目录下自动添加默认配置文件,由此可以让 ...

  9. python保存代码_python入门(5)使用文件编辑器编写代码并保存执行

    原博文 2017-04-21 17:21 − python入门(5)使用文件编辑器编写代码并保存执行 两款文本编辑器: 一个是Sublime Text,免费使用,但是不付费会弹出提示框: 一个是Not ...

最新文章

  1. Cisco之ARP配置
  2. what to do preparing for phd
  3. Job Processing 工序安排
  4. MYBATIS 根据IN条件查询时,数据只查第一个的问题(字符串被截断......)
  5. sublime 3143 注册码
  6. javascript怎么禁用浏览器后退按钮
  7. 3dmax材质通道插件_3dmax插件外挂神器【疯狂模渲大师蓝色经典版】第九章:渲染后期教程...
  8. 湖南师范大学计算机网络基础教学平台,基于网络的师徒式教学平台的设计与实现...
  9. (一)GPS与基站定位
  10. DBeaver - 一款免费开源的通用数据库工具
  11. jdk目录详解及其使用方法
  12. java-学生管理系统源代码
  13. 搜索方法_如何搜索到自己的CSDN博客
  14. 理解透彻!从单体式架构迁移到微服务架构
  15. 端午节之苍南懒人游 (*^__^*) ……
  16. 谈谈堆排序,大顶堆,小顶堆
  17. 磨金石教育摄影技能干货分享|王汉冰摄影作品欣赏—《沙狐之眼》
  18. 图情论文笔记 | 图书情报档案机构如何助力乡村振兴?
  19. 随着国产动漫的崛起,越来越好奇3D动漫的制作过程了
  20. int向long long 类型转换

热门文章

  1. Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)
  2. 使用C# 探索 ML.NET 中的不同机器学习任务
  3. .NET 生态系统的蜕变之 .NET 6云原生
  4. SingnalR 开发到生产部署闭坑指南
  5. Dapr牵手.NET学习笔记:可观测性-分布式跟踪
  6. 为什么我的 Func 如此之慢?
  7. 一图看懂 ASP.NET Core 中的服务生命周期
  8. 阿里25k 百度25k,招WPF!
  9. 程序员过关斩将--请不要误会redis 6.0 的多线程
  10. 跟我一起学.NetCore之MediatR好像有点火