亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python Socket傳輸圖片

系統(tǒng) 2878 0

我們?cè)趥鬏敂?shù)據(jù)時(shí),經(jīng)常使用tcp/ip的服務(wù)器和客戶端模型,很多設(shè)備也經(jīng)常將網(wǎng)口作為硬件接口預(yù)留出來。可以使用 tcp/ip 傳輸圖像、大的文件等,如果圖片過大,還會(huì)進(jìn)行拆分傳輸,接收方根據(jù)對(duì)應(yīng)協(xié)議進(jìn)行解包。解包過程中可能會(huì)出現(xiàn) tcp 粘包現(xiàn)象,所以要根據(jù)對(duì)應(yīng)特性進(jìn)行拆包。本次給大家分享一個(gè)小的 python 傳輸圖像的例子,由于數(shù)據(jù)量不大,沒有粘包的現(xiàn)象,以后會(huì)給大家分享一個(gè) Qt 下使用 tcp/ip 根據(jù)對(duì)應(yīng)協(xié)議解析圖片的例子。

?

一般在發(fā)送圖片數(shù)據(jù)之前會(huì)先將圖片的大小等相關(guān)數(shù)據(jù)作為一包數(shù)據(jù)先發(fā)送,結(jié)束的時(shí)候會(huì)再次發(fā)送結(jié)束的數(shù)據(jù)包,根據(jù)包頭與包尾來判斷圖片接收組包是否完整。

?

運(yùn)行環(huán)境:ubuntu 14.04

?

?

先來一個(gè)小流程圖:


CLIENT ??????????????????????????????????????SERVER

?????????????? ??? ?SIZE (image size)

?????????---------------------------------->

??????????????????????GOT SIZE ??

?????????<----------------------------------

?????????????????send image itself

?????????---------------------------------->

??????????????????????GOT IMAGE

?????????<----------------------------------

??????????????????????BYE BYE

?????????---------------------------------->

????????????????server closes socket

1.?Python client send image:


            
              
                try:	
	
    # open image	
    myfile = open(image, 'rb')	
    bytes = myfile.read()	
    size = len(bytes)	
    	
    # send image size to server	
    sock.sendall("SIZE %s" % size)	
    answer = sock.recv(4096)	
	
    print 'answer = %s' % answer	
	
    # send image to server	
    if answer == 'GOT SIZE':	
        sock.sendall(bytes)	
	
        # check what server send	
        answer = sock.recv(4096)	
        print 'answer = %s' % answer	
	
        if answer == 'GOT IMAGE' :	
            sock.sendall("BYE BYE ")	
            print 'Image successfully send to server'	
	
    myfile.close()	
	
finally:	
    sock.close()
              
            


發(fā)送圖片是客戶端,主要是將圖片讀取為字節(jié),獲取字節(jié)大小,先發(fā)送到服務(wù)器端。之后等待服務(wù)器應(yīng)答,服務(wù)器向客戶端發(fā)送 'GOT SIZE' ,表明成功接收到圖片大小,之后客戶端發(fā)送圖片字節(jié)。這里面主要的就是如何讀取圖片為字節(jié)數(shù)據(jù)。


2.?Python server recv image:

            
              
                while True:	
	
    read_sockets, write_sockets, error_sockets = select.select(connected_clients_sockets, [], [])	
	
    for sock in read_sockets:	
	
        if sock == server_socket:	
	
            sockfd, client_address = server_socket.accept()	
            connected_clients_sockets.append(sockfd)	
	
        else:	
            try:	
	
                data = sock.recv(4096)	
                txt = str(data)	
	
                if data:	
	
                    if data.startswith('SIZE'):	
                        tmp = txt.split()	
                        size = int(tmp[1])	
	
                        print 'got size'	
	
                        sock.sendall("GOT SIZE")	
	
                    elif data.startswith('BYE'):	
                        sock.shutdown()	
	
                    else :	
	
                        myfile = open(basename % imgcounter, 'wb')	
                        myfile.write(data)	
	
                        data = sock.recv(40960000)	
                        if not data:	
                            myfile.close()	
                            break	
                        myfile.write(data)	
                        myfile.close()	
	
                        sock.sendall("GOT IMAGE")	
                        sock.shutdown()	
            except:	
                sock.close()	
                connected_clients_sockets.remove(sock)	
                continue	
        imgcounter += 1	
server_socket.close()
              
            


服務(wù)器這邊主要是接收到圖片字節(jié)數(shù)據(jù),將圖片寫到后綴為.png的文件中。

?

程序結(jié)果如下:

image3是接收到的圖片, dh 是被傳輸?shù)脑瓐D。 QtTcpServer 是用 Qt 寫的服務(wù)器接收?qǐng)D片程序,下次再分享給大家。


Python Socket傳輸圖片_第1張圖片


如果需要完整程序,歡迎公眾號(hào)后臺(tái)留言,留下聯(lián)系方式。


本文主要供學(xué)習(xí)使用,不做商業(yè)用途,如果轉(zhuǎn)載請(qǐng)注明作者與出處,謝謝。


Python Socket傳輸圖片_第2張圖片




更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲国产成人精品一区二区三区 | 欧美国产综合日韩一区二区 | 日本免费一区二区三区 | 亚洲日本中文字幕 | 最猛黑人xxxⅹ黑人猛交 | 不卡的在线视频免费观看 | 国产亚洲欧美成人久久片 | 一级毛片 在线播放 | 狠狠操.com | 国产欧美精品三区 | 国产亚洲福利精品一区 | 中文字幕日韩精品中文区 | 天天操天天摸天天爽 | 亚洲男人的天堂久久香蕉网 | 最新中文字幕在线观看 | 在线日本妇人成熟免费观看 | 就操成人网 | 色综合视频一区二区观看 | 成人国产精品免费网站 | 老司机久久影院 | 亚洲a成人 | 香蕉视频网站入口 | 久草手机在线观看 | 在线视频不卡国产在线视频不卡 | 精品国产视频 | 欧美一区二区在线免费观看 | 久久99国产精品成人 | 松永纱奈在线观看 | 中文字幕在线精品 | 九九精品成人免费国产片 | 起碰成人免费公开网视频 | 免费看片aⅴ免费大片 | 爱爱网站免费 | 欧美一级久久久久久久大 | 中国欧美日韩一区二区三区 | 2021天天干 | 国产在线观看午夜不卡 | 久久精品店| 亚洲精品人成无码中文毛片 | 亚洲国产一区二区a毛片 | 丹武至尊在线观看动漫 |