python socket 发送图片
服务端
# -*- coding=utf-8 -*-
import socket
import threading
import sys
import os
import structdef deal_data(conn, addr):print('Accept new connection from {0}'.format(addr))while True:fileinfo_size = struct.calcsize('128sl') # linux 和 windows 互传 128sl 改为 128sq 机器位数不一样,一个32位一个64位buf = conn.recv(fileinfo_size)print('收到的字节流:', buf, type(buf))if buf:print(buf, type(buf))filename, filesize = struct.unpack('128sl', buf)fn = filename.strip(str.encode('\00'))new_filename = os.path.join(str.encode('./'), str.encode('new_') + fn)print('file new name is {0}, filesize if {1}'.format(new_filename, filesize))recvd_size = 0 # 定义已接收文件的大小with open(new_filename, 'wb') as fp: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)print("end receive...")conn.close()breakdef socket_service():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('', 12345)) # 这里换上自己的ip和端口s.listen(10)except socket.error as msg:print(msg)sys.exit(1)print("Waiting...")while True:conn, addr = s.accept()t = threading.Thread(target=deal_data, args=(conn, addr))t.start()if __name__ == '__main__':socket_service()
客户端
# -*- coding=utf-8 -*-import socket
import os
import sys
import structdef socket_client():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(('192.168.0.66', 12345))except socket.error as msg:print(msg)sys.exit(1)while True: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', bytes(os.path.basename(filepath).encode('utf-8')), os.stat(filepath).st_size)s.send(fhead)print('client filepath: {0}'.format(filepath))with open(filepath, 'rb') as fp:while True:data = fp.read(1024)if not data:print('{0} file send over...'.format(filepath))breaks.send(data)s.close()breakif __name__ == '__main__':socket_client()
python socket 发送图片相关推荐
- Windows下C 用 Socket 发送图片--基础
Windows下C 用 Socket 发送图片--基础 转载:http://blog.csdn.net/yulinxx/article/details/51338214 服务器端: #include ...
- python socket发送TCP数据
python socket发送TCP数据 用python写socket发送 TCP的数据 import socket import time #客户端发送500个包 创建socket.连接.发送.关闭 ...
- python udp 直播_[Python] socket发送UDP广播实现聊天室功能
原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...
- python socket发送组播数据_python3通过udp实现组播数据的发送和接收操作
本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息. 通过抓包发现,海康摄像头发送.接收数据使用udp协议,后来比较发现,使用python模拟起来比较简 ...
- 用Python定时发送图片到群消息,并艾特了所有人!
大家好,我是小一 昨天关于excel自动化的那篇文章发出之后,感觉大家对这个还挺感兴趣,并且在才哥那边有好几位读者在追问如何实现图片自动发送 说实话,有点惊讶大家对图片定时发送感兴趣,我原以为会有读者 ...
- python 微信发送图片给好友_Python给指定微信好友自动发送信息和图片
importosimport win32gui #pywin32-221.win-amd64-py3.7.exeimportwin32con from ctypesimport * importwin ...
- python socket发送数组_利用pyprocessing初步探索数组排序算法可视化
[经过两次更新,功能基本完成]最终效果请直接下拉到最后一个视频观看 背景说明 这篇文章旨在初步探索利用pyprocessing的强大的可视化功能,以及pyprocessing和Ipython之间的本地 ...
- python socket发送16进制数据_python socket以16进制的数据进行传递与解析
参考:http://m.blog.csdn.net/blog/JasonQue/8256424 具体的struct模块的解释可以参照上面的链接. struct.pack也就是将数据按照二进制的格式进行 ...
- python 微信发送图片_使用python向企业微信发送文字和图片消息
使用python向企业微信发送文字和图片消息 吐槽一下企业微信的api文档真的不好读······ 企业微信本来是有功能,可以直接把图片显示到正文的,但是那个api我调用一直出错,各种折腾也没解决.后来 ...
最新文章
- Revit结构2021-2022从零到精通
- 第1条:考虑用静态工厂方法代替构造器
- Exchange Server 2019新功能预览-揭秘被削减的功能
- 21丨容器化守护进程的意义:DaemonSet
- ES6 解构赋值的用法笔记
- MongoDB 去重(distinct)查询后求总数(count)
- jsp fmt标签详解
- 【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
- python编写计算器输入1或2代表+或x_Python实现两款计算器功能示例
- 如何保证进程间同步工作_系统设计硬核知识(2)——操作系统的进程管理
- java冒泡排序 代码简单明了
- 网易云邮箱验证码注册及修改密码
- 优动漫PAINT实用教程——创建自动动作提高效率
- sqlserver transact-sql UPDATE tran 用事务处理更新语句
- 2012年股市楼市泡沫终将破灭
- PMBOK(第六版) 学习笔记 ——《第十三章 项目相关方管理》
- HDU - 1242
- 比MySQL快839倍!揭开分析型数据库JCHDB的神秘面纱
- Java笔记(2)--java基础语法
- io复用相对于多进程、多线程的优势