使用 socket 实现图片传输。

# -*- coding=utf-8 -*-"""
file: recv.py
socket service
"""
import socket
import threading
import time
import sys
import os
import structdef socket_service():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('127.0.0.1', 6666))s.listen(10)except socket.error as msg:print(msg)sys.exit(1)print('Waiting connection...')while 1:conn, addr = s.accept()t = threading.Thread(target=deal_data, args=(conn, addr))t.start()def deal_data(conn, addr):print('Accept new connection from {0}'.format(addr))#conn.settimeout(500)conn.send('Hi, Welcome to the server!'.encode("utf-8"))while 1:fileinfo_size = struct.calcsize('128sl')buf = conn.recv(fileinfo_size)if buf:filename, filesize = struct.unpack('128sl', buf)fn = filename.strip(b"\x00").decode("utf-8")new_filename = os.path.join('./', 'new_' + fn)print(new_filename,filesize)print('file new name is {0}, filesize if {1}'.format(new_filename,filesize))recvd_size = 0  # 定义已接收文件的大小fp = open(new_filename, 'wb')print('start receiving...')while not recvd_size == filesize:if filesize - recvd_size > 1024:data = conn.recv(1024)recvd_size += len(data)else:data = conn.recv(filesize - recvd_size)recvd_size = filesizefp.write(data)fp.close()print('end receive...')conn.send('已发送'.encode("utf-8"))print(conn.recv(1024).decode('utf-8'))conn.close()breakif __name__ == '__main__':socket_service()
# -*- coding=utf-8 -*-"""
file: send.py
socket client
"""import socket
import os
import sys
import struct
import win32ui
import cv2
capture = cv2.VideoCapture(0)def socket_client():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(('127.0.0.1', 6666))except socket.error as msg:print(msg)sys.exit(1)print(s.recv(1024).decode("utf-8"))while 1:#ret, frame = capture.read()#cv2.imwrite("C:/Users/***/Pictures/Saved Pictures/youtemp.jpg", frame)#capture.release()  # 释放摄像头#cv2.destroyAllWindows()dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框dlg.SetOFNInitialDir('C:/')  # 设置打开文件对话框中的初始显示目录dlg.DoModal()filepath = dlg.GetPathName()  # 获取选择的文件名称print(filepath)# filepath = input('please input file path: ')if os.path.isfile(filepath):# 定义定义文件信息。128s表示文件名为128bytes长,l表示一个int或log文件类型,在此为文件大小fileinfo_size = struct.calcsize('128sl')# 定义文件头信息,包含文件名和文件大小fhead = struct.pack('128sl',os.path.basename(filepath).encode(encoding="utf-8"),os.stat(filepath).st_size)print('client filepath: {0}'.format(filepath))s.send(fhead)fp = open(filepath, 'rb')while 1:data = fp.read(1024)if not data:print('{0} file send over...'.format(filepath))breaks.send(data)print(s.recv(1024).decode("utf-8"))print(s.recv(1024).decode("utf-8"))s.close()breakif __name__ == '__main__':socket_client()

python socket传输图片相关推荐

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

    python使用socket传输图片视频等文件的实现方式 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python使用socket传输图片视频等文件的实现方式 ...

  2. Python Socket传输图片

    我们在传输数据时,经常使用tcp/ip的服务器和客户端模型,很多设备也经常将网口作为硬件接口预留出来.可以使用tcp/ip传输图像.大的文件等,如果图片过大,还会进行拆分传输,接收方根据对应协议进行解 ...

  3. python socket传输摄像头画面

    实现两台机器之间传输摄像头画面.其中服务端拍摄画面并传输,客户端接收再显示. 传输方法用了之前的socket传输图片.视频就是连续的图片.摄像头画面的采集使用opencv. 1,服务端: #!/usr ...

  4. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...

  5. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  6. python udp 直播_[Python] socket发送UDP广播实现聊天室功能

    原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...

  7. 【Python之旅】第五篇(三):Python Socket多线程并发

    1.多线程模块 主要是socketserver模块,如下图示: 2.多线程原理 如下图示说明: 3.SockteServer例子说明 服务器端: 客户端: 4.演示 还是以前面例子,对代码进行修改,作 ...

  8. python socket 说明

    一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...

  9. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

最新文章

  1. git push VS git fetch
  2. 迪士尼“新顶流”,火不到娱乐圈
  3. jpa报错No property found for column ‘first_time‘ mapped to field ‘first_time‘
  4. ssh-keygen 的 详解
  5. 浅谈js函数三种定义方式 四种调用方式 调用顺序
  6. python爬虫怎么赚钱-如何利用python爬虫挣钱
  7. [黑科技] 使用Word和Excel自制题库自判断答题系统
  8. 代码自动生成-宏带来的奇计淫巧
  9. C语言三种形式编九九乘法表,C语言九九乘法表(五种输出形式)
  10. xp系统本地连接服务器,xp系统本地连接受限制或无连接怎么办丨xp本地连接断开无法上网解决办法...
  11. U盘启动盘制作(步骤详细)
  12. 二.微信小程序代码的构成
  13. MAC常用进入文件夹剪贴粘贴打开文件夹快捷键
  14. C22-利用泰勒公式求sin(x)的值
  15. nginx负载均衡(权重)
  16. js Arry对象思维导图
  17. 字符串搜索、搜索子串 rangeOfString方法
  18. BeanCopy 常用工具类
  19. android 键盘自动收起来了,Android 键盘收起
  20. 使用WireShark你需要知道的技巧(新手向)

热门文章

  1. javaWeb项目学生选课系统完整源码附带数据库
  2. 全国省、市、区、乡镇/街道地址四级数据库sql
  3. 四级英语作文:如何减轻压力
  4. 数据中心:全面云化的新一代互联网基础笔记
  5. SAP随笔定位经验记录
  6. 十八、指数启动初期龙头选股法
  7. 高考志愿app有哪些
  8. clang format
  9. 安卓Rx是什么意思,Rxjava,RxPermission等中rx的含义
  10. ROS:启动管理工具launch