最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用tcp傳輸圖片數(shù)據(jù)

 更新時(shí)間:2021年06月22日 10:43:24   作者:zebra_zzh  
這篇文章主要為大家詳細(xì)介紹了python使用tcp傳輸圖片數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python使用tcp傳輸圖片數(shù)據(jù)的具體代碼,供大家參考,具體內(nèi)容如下

數(shù)據(jù)包格式如下

客戶端:

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))
    
    #包頭標(biāo)志
    arrBuf = bytearray(b'\xff\xaa\xff\xaa')
    
    #以二進(jìn)制方式讀取圖片
    picData = open('1.jpg', 'rb')
    picBytes = picData.read()
    
    #圖片大小
    picSize = len(picBytes)
    
    #數(shù)據(jù)體長(zhǎng)度 = guid大小(固定) + 圖片大小
    datalen = 64 + picSize
    
    #組合數(shù)據(jù)包
    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()

服務(wù)端:

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))
                    #接收到的數(shù)據(jù),前64字節(jié)是guid,后面的是圖片數(shù)據(jù)
                    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)
 
                    #將圖片數(shù)據(jù)保存到本地文件
                    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()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析

    基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析

    這篇文章主要介紹了基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python3的socket使用方法詳解

    Python3的socket使用方法詳解

    這篇文章主要介紹了Python3的socket使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python 實(shí)現(xiàn)LeNet網(wǎng)絡(luò)模型的訓(xùn)練及預(yù)測(cè)

    Python 實(shí)現(xiàn)LeNet網(wǎng)絡(luò)模型的訓(xùn)練及預(yù)測(cè)

    本文將為大家詳細(xì)講解如何使用CIFR10數(shù)據(jù)集訓(xùn)練模型以及用訓(xùn)練好的模型做預(yù)測(cè)。代碼具有一定價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • Python算法應(yīng)用實(shí)戰(zhàn)之棧詳解

    Python算法應(yīng)用實(shí)戰(zhàn)之棧詳解

    棧是什么,你可以理解為一種先入后出的數(shù)據(jù)結(jié)構(gòu)(First In Last Out),一種操作受限的線性表。下面這篇文章主要給大家介紹了Python中棧的應(yīng)用實(shí)戰(zhàn),文中給出了多個(gè)實(shí)例,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • python 如何通過(guò)執(zhí)行腳本安裝庫(kù)或卸載庫(kù)

    python 如何通過(guò)執(zhí)行腳本安裝庫(kù)或卸載庫(kù)

    通過(guò)執(zhí)行Python腳本,用戶可以輕松地安裝或卸載所需的庫(kù),本文介紹了該過(guò)程的具體步驟,包括如何編寫(xiě)用于安裝或卸載庫(kù)的腳本,無(wú)論是需要添加新功能還是清理環(huán)境,通過(guò)這種方式,開(kāi)發(fā)者都能有效管理其工作環(huán)境中的庫(kù)
    2024-11-11
  • Python實(shí)現(xiàn)基于多線程、多用戶的FTP服務(wù)器與客戶端功能完整實(shí)例

    Python實(shí)現(xiàn)基于多線程、多用戶的FTP服務(wù)器與客戶端功能完整實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)基于多線程、多用戶的FTP服務(wù)器與客戶端功能,結(jié)合完整實(shí)例形式分析了Python多線程、多用戶FTP服務(wù)器端與客戶端相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-08-08
  • Python中的異常處理:try?except?Exception?as?e解決辦法

    Python中的異常處理:try?except?Exception?as?e解決辦法

    這篇文章主要介紹了Python中的異常處理機(jī)制,包括try、except、finally語(yǔ)句的基本用法和高級(jí)用法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Python?Tkinter美化彈窗的示例詳解

    Python?Tkinter美化彈窗的示例詳解

    在Python編程中,Tkinter是標(biāo)準(zhǔn)GUI(圖形用戶界面)庫(kù),它允許開(kāi)發(fā)者創(chuàng)建桌面應(yīng)用程序,本文將詳細(xì)介紹如何使用Tkinter創(chuàng)建并美化彈窗,需要的可以參考下
    2024-12-12
  • python基礎(chǔ)教程項(xiàng)目二之畫(huà)幅好畫(huà)

    python基礎(chǔ)教程項(xiàng)目二之畫(huà)幅好畫(huà)

    這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項(xiàng)目二之畫(huà)幅好畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼

    Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼

    這篇文章主要介紹了Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論

胶州市| 济宁市| 武乡县| 太保市| 西乌珠穆沁旗| 宜宾县| 衡阳市| 新绛县| 沂源县| 饶河县| 汉寿县| 南华县| 青海省| 承德市| 三门峡市| 玛沁县| 镇原县| 佛学| 九台市| 苏州市| 巴彦淖尔市| 阳朔县| 连平县| 灵宝市| 汉川市| 监利县| 阳原县| 宁武县| 桓仁| 禄丰县| 化德县| 佛学| 黄石市| 贡觉县| 栾川县| 巴彦县| 石景山区| 安龙县| 炎陵县| 南溪县| 玉树县|