服务端

# -*- 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 发送图片相关推荐

  1. Windows下C 用 Socket 发送图片--基础

    Windows下C 用 Socket 发送图片--基础 转载:http://blog.csdn.net/yulinxx/article/details/51338214 服务器端: #include  ...

  2. python socket发送TCP数据

    python socket发送TCP数据 用python写socket发送 TCP的数据 import socket import time #客户端发送500个包 创建socket.连接.发送.关闭 ...

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

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

  4. python socket发送组播数据_python3通过udp实现组播数据的发送和接收操作

    本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息. 通过抓包发现,海康摄像头发送.接收数据使用udp协议,后来比较发现,使用python模拟起来比较简 ...

  5. 用Python定时发送图片到群消息,并艾特了所有人!

    大家好,我是小一 昨天关于excel自动化的那篇文章发出之后,感觉大家对这个还挺感兴趣,并且在才哥那边有好几位读者在追问如何实现图片自动发送 说实话,有点惊讶大家对图片定时发送感兴趣,我原以为会有读者 ...

  6. python 微信发送图片给好友_Python给指定微信好友自动发送信息和图片

    importosimport win32gui #pywin32-221.win-amd64-py3.7.exeimportwin32con from ctypesimport * importwin ...

  7. python socket发送数组_利用pyprocessing初步探索数组排序算法可视化

    [经过两次更新,功能基本完成]最终效果请直接下拉到最后一个视频观看 背景说明 这篇文章旨在初步探索利用pyprocessing的强大的可视化功能,以及pyprocessing和Ipython之间的本地 ...

  8. python socket发送16进制数据_python socket以16进制的数据进行传递与解析

    参考:http://m.blog.csdn.net/blog/JasonQue/8256424 具体的struct模块的解释可以参照上面的链接. struct.pack也就是将数据按照二进制的格式进行 ...

  9. python 微信发送图片_使用python向企业微信发送文字和图片消息

    使用python向企业微信发送文字和图片消息 吐槽一下企业微信的api文档真的不好读······ 企业微信本来是有功能,可以直接把图片显示到正文的,但是那个api我调用一直出错,各种折腾也没解决.后来 ...

最新文章

  1. Revit结构2021-2022从零到精通
  2. 第1条:考虑用静态工厂方法代替构造器
  3. Exchange Server 2019新功能预览-揭秘被削减的功能
  4. 21丨容器化守护进程的意义:DaemonSet
  5. ES6 解构赋值的用法笔记
  6. MongoDB 去重(distinct)查询后求总数(count)
  7. jsp fmt标签详解
  8. 【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
  9. python编写计算器输入1或2代表+或x_Python实现两款计算器功能示例
  10. 如何保证进程间同步工作_系统设计硬核知识(2)——操作系统的进程管理
  11. java冒泡排序 代码简单明了
  12. 网易云邮箱验证码注册及修改密码
  13. 优动漫PAINT实用教程——创建自动动作提高效率
  14. sqlserver transact-sql UPDATE tran 用事务处理更新语句
  15. 2012年股市楼市泡沫终将破灭
  16. PMBOK(第六版) 学习笔记 ——《第十三章 项目相关方管理》
  17. HDU - 1242
  18. 比MySQL快839倍!揭开分析型数据库JCHDB的神秘面纱
  19. Java笔记(2)--java基础语法
  20. io复用相对于多进程、多线程的优势

热门文章

  1. tiantianguandan官方网站
  2. 就要有鹤立鸡群的HTML5资本
  3. 写完程序 看 蜡笔小新 的有木有
  4. 理解ASP.NET中的三层结构
  5. 当然我这里讲的都是与数据库有关的字符串拼凑
  6. QQ超极无敌无诚意的回答
  7. ug添加imachining变量_UG用的不够快?是不是还没建标准库
  8. Adobe illustrator 直接选择工具删除白板 - 连载 6
  9. 复现Cell附图 |类器官的单细胞分析
  10. 高一数学集合知识点整理_高一 | 数学 “集合”知识点总结及归纳~