python socket传输图片
使用 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传输图片相关推荐
- python socket传输图片_python使用socket传输图片视频等文件的实现方式
python使用socket传输图片视频等文件的实现方式 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python使用socket传输图片视频等文件的实现方式 ...
- Python Socket传输图片
我们在传输数据时,经常使用tcp/ip的服务器和客户端模型,很多设备也经常将网口作为硬件接口预留出来.可以使用tcp/ip传输图像.大的文件等,如果图片过大,还会进行拆分传输,接收方根据对应协议进行解 ...
- python socket传输摄像头画面
实现两台机器之间传输摄像头画面.其中服务端拍摄画面并传输,客户端接收再显示. 传输方法用了之前的socket传输图片.视频就是连续的图片.摄像头画面的采集使用opencv. 1,服务端: #!/usr ...
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...
- Python Socket请求网站获取数据
Python Socket请求网站获取数据 ---阻塞 I/O ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...
- python udp 直播_[Python] socket发送UDP广播实现聊天室功能
原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...
- 【Python之旅】第五篇(三):Python Socket多线程并发
1.多线程模块 主要是socketserver模块,如下图示: 2.多线程原理 如下图示说明: 3.SockteServer例子说明 服务器端: 客户端: 4.演示 还是以前面例子,对代码进行修改,作 ...
- python socket 说明
一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
最新文章
- git push VS git fetch
- 迪士尼“新顶流”,火不到娱乐圈
- jpa报错No property found for column ‘first_time‘ mapped to field ‘first_time‘
- ssh-keygen 的 详解
- 浅谈js函数三种定义方式 四种调用方式 调用顺序
- python爬虫怎么赚钱-如何利用python爬虫挣钱
- [黑科技] 使用Word和Excel自制题库自判断答题系统
- 代码自动生成-宏带来的奇计淫巧
- C语言三种形式编九九乘法表,C语言九九乘法表(五种输出形式)
- xp系统本地连接服务器,xp系统本地连接受限制或无连接怎么办丨xp本地连接断开无法上网解决办法...
- U盘启动盘制作(步骤详细)
- 二.微信小程序代码的构成
- MAC常用进入文件夹剪贴粘贴打开文件夹快捷键
- C22-利用泰勒公式求sin(x)的值
- nginx负载均衡(权重)
- js Arry对象思维导图
- 字符串搜索、搜索子串 rangeOfString方法
- BeanCopy 常用工具类
- android 键盘自动收起来了,Android 键盘收起
- 使用WireShark你需要知道的技巧(新手向)