树莓派利用socket传图到pc端(Python)
1.PC作为socket的服务器端:
import socket
import os
import sys
import structdef socket_service():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#IP地址留空默认是本机IP地址s.bind(('', 8088))s.listen(7)except socket.error as msg:print(msg)sys.exit(1)print("连接开启,等待传图...")while True:sock, addr = s.accept()deal_data(sock, addr)s.close()def deal_data(sock, addr):print("成功连接上 {0}".format(addr))while True:fileinfo_size = struct.calcsize('128sl')buf = sock.recv(fileinfo_size)if buf:filename, filesize = struct.unpack('128sl', buf)fn = filename.decode().strip('\x00')#PC端图片保存路径new_filename = os.path.join('C:/Users/user/Desktop', fn)recvd_size = 0fp = open(new_filename, 'wb')while not recvd_size == filesize:if filesize - recvd_size > 1024:data = sock.recv(1024)recvd_size += len(data)else:data = sock.recv(1024)recvd_size = filesizefp.write(data)fp.close()sock.close()breakif __name__ == '__main__':socket_service()
2.树莓派作为socket的客户端:
import socket
import os
import sys
import structdef sock_client():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#192.168.199.1和8088分别为服务端(pc)的IP地址和网络端口s.connect(('192.168.199.1', 8088))except socket.error as msg:print(msg)print(sys.exit(1))while True:#filepath是要被发送图片的路径filepath = '/home/pi/ceshi/image.jpg'fhead = struct.pack(b'128sl', bytes(os.path.basename(filepath), encoding='utf-8'), os.stat(filepath).st_size)s.send(fhead)print('client filepath: {0}'.format(filepath))fp = open(filepath, 'rb')while 1:data = fp.read(1024)if not data:print('{0} 发送成功...'.format(filepath))breaks.send(data)s.close()breakif __name__ == '__main__':sock_client()
socket连接,如果连接不成功直接退出程序sys.exit(1):
try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#192.168.199.1和8088分别为服务端(pc)的IP地址和网络端口s.connect(('192.168.199.1', 8088))
except socket.error as msg:print(msg)print(sys.exit(1))
树莓派利用socket传图到pc端(Python)相关推荐
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...
- Java中利用socket实现简单的服务端与客户端的通信(入门级)
Java编程中,要想要使用网络通信,就离不开Socket编程,在此对socket进行简单的介绍.首先声明,这是一个入门级的介绍,仅仅简单的实现了客户端向服务端发送数据,服务端正常的接收数据,当接收到特 ...
- better-scroll + fastclick 轮播图在pc端方案
轮播图结构是a标签包含img, 在pc端,当用鼠标滑动图片时,会自动打开a标签的链接? 是不是这两个插件冲突? 还是说 在滑动时 派发了click事件? http://www.sofangche.co ...
- linux+udp数据传输,Linux利用socket实现两台pc之间的数据传输功能,包括windows到linux,UDP实现...
makefile 和TCP一样,参见上一篇博文 客户端和服务端主函数也和上一篇的tcp是一样的,同样参考上一篇博文,这里只是修改了pub.c的文件了 /* * pub.c * * Created on ...
- 利用js实现手机访问PC端直接跳转wap端
在做网页的时候,有些页面有pc版跟wap版.那么在同一个页面的情况下怎样做到在电脑端直接转手机端,或者用手机端访问PC网址直接跳转wap网址.这边就需要做跳转处理: (function(){ var ...
- 【树莓派4B】安装Ubuntu Mate20.04+ROS Noetic+使用电脑自带的xrdp和VNC进行PC端远程控制
目录 前言 一.烧录Ubuntu Mate20.04 1.下载Ubuntu Mate 20.04 2.格式化SD卡并烧录系统 3*.打开SSH功能 二.配置Ubuntu环境 1.初次开机进行简单的配置 ...
- python微信机器人pc端
相信很多玩python的都知道,以前有个第三方库可以操作微信,实现自动回复等等功能,其原理是用https进行通信的, 但是现在大部分微信都不能登录网页版了,很多好玩的项目都受到了影响.因此,我来了. ...
- 使用USB四端口Hub,PC端不能显示Kindle已经连接上
场景: 使用某校招企业(公司就不说啦)赠送的四端口USB的Hub,以数据线连Kindle和PC 故障现象: Kindle端显示已经进入驱动模式,也就是不能充电,数据线暂时只能用作传数据.PC端,右下处 ...
最新文章
- 手机与Camera CCM技术发展趋势
- 初识Quartz(三)
- wxWidgets:显示和测试 wxDC 功能
- 《leetcode》spiral-matrix-ii(构造螺旋矩阵)
- python你是否也走进了这个误区了_Python是不是被严重高估了?
- css实现两端对齐的3种方法
- 排序算法性能和使用场景总结
- Harris 角点检测子
- Coins(HDU2844)
- 易语言怎么给手机发短信
- 认清自我,不在迷茫!2019个人年终总结!
- Bootstrap可视化布局系统
- 三星s9怎么打开开发者模式
- 台式计算机显示不了无线网络,我是台式电脑,插上无线网卡怎么我的链接里不显示无线...
- python 输出圆的面积公式_python计算圆的面积
- 图片打标签labelimg
- curl发送请求简单实践
- 2007世界大学学术排名(上海交大)
- 已知一个如图所示的训练数据集,其正例点是x1=(3,3),x1=(4,3),负例点是x3=(1,1),试求最大间隔分离超平面。
- 2021年危险化学品经营单位安全管理人员考试题及危险化学品经营单位安全管理人员证考试