• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python使用tcp传输图片数据

    本文实例为大家分享了python使用tcp传输图片数据的具体代码,供大家参考,具体内容如下

    数据包格式如下

    客户端:

    import socket
    import sys
     
    HOST,PORT = "172.18.0.3",19984
     
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((HOST, PORT))
        
        #包头标志
        arrBuf = bytearray(b'\xff\xaa\xff\xaa')
        
        #以二进制方式读取图片
        picData = open('1.jpg', 'rb')
        picBytes = picData.read()
        
        #图片大小
        picSize = len(picBytes)
        
        #数据体长度 = guid大小(固定) + 图片大小
        datalen = 64 + picSize
        
        #组合数据包
        arrBuf += bytearray(datalen.to_bytes(4, byteorder='little'))
        guid = 23458283482894382928948
        arrBuf += bytearray(guid.to_bytes(64, byteorder='little'))
        arrBuf += picBytes
        
        sock.sendall(arrBuf)
        sock.close()
     
    if __name__ == '__main__':
        main()

    服务端:

    import socketserver
    import os
    import sys
    import time
    import threading
     
    ip_port=("172.18.0.3",19984)
     
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            print("conn is :",self.request) # conn
            print("addr is :",self.client_address) # addr
            
            while True:
                try:
                    self.str = self.request.recv(8)
                    data = bytearray(self.str)
                    headIndex = data.find(b'\xff\xaa\xff\xaa')
                    print(headIndex)
                    
                    if headIndex == 0:
                        allLen = int.from_bytes(data[headIndex+4:headIndex+8], byteorder='little')
                        print("len is ", allLen)
     
                        curSize = 0
                        allData = b''
                        while curSize  allLen:
                            data = self.request.recv(1024)
                            allData += data
                            curSize += len(data)
     
                        print("recv data len is ", len(allData))
                        #接收到的数据,前64字节是guid,后面的是图片数据
                        arrGuid = allData[0:64]
                        #去除guid末尾的0
                        tail = arrGuid.find(b'\x00')
                        arrGuid = arrGuid[0:tail]
                        strGuid = str(int.from_bytes(arrGuid, byteorder = 'little')) #for test
                        
                        print("-------------request guid is ", strGuid)
                        imgData = allData[64:]
                        strImgFile = "2.jpg"
                        print("img file name is ", strImgFile)
     
                        #将图片数据保存到本地文件
                        with open(strImgFile, 'wb') as f:
                            f.write(imgData)
                            f.close()
                            
                        break
                except Exception as e:
                    print(e)
                    break
     
     
    if __name__ == "__main__":
        s = socketserver.ThreadingTCPServer(ip_port, MyServer)
        print("start listen")
        s.serve_forever()

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • python 中Arduino串口传输数据到电脑并保存至excel表格
    • 对python中基于tcp协议的通信(数据传输)实例讲解
    • 在python环境下运用kafka对数据进行实时传输的方法
    • 使用python实现http及ftp服务进行数据传输的方法
    • Python爬虫抓取手机APP的传输数据
    • python网络编程之数据传输UDP实例分析
    • python实现udp数据报传输的方法
    上一篇:分析如何在Python中解析和修改XML
    下一篇:python持久化存储文件操作方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python使用tcp传输图片数据 python,使用,tcp,传输,图片,