Inhaltsverzeichnis
Programm:
Heim Backend-Entwicklung Python-Tutorial Python-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung

Python-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung

Sep 11, 2018 pm 04:57 PM
linux python ubuntu windows

Der Inhalt dieses Artikels befasst sich mit dem Code für die clientseitige und serverseitige Bildübertragung. Ich hoffe, dass er für Freunde hilfreich ist.

Problem: Verwenden Sie Windows als Client und Linux als Server, um das Diagramm zu übertragen

Programm:

'''
Fuction:客户端发送图片和数据
Date:2018.9.8
Author:snowking
'''
###客户端client.py
import socket
import os
import sys
import struct

def sock_client_image():
    while True:
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect(('服务器的ip', 6666))  #服务器和客户端在不同的系统或不同的主机下时使用的ip和端口,首先要查看服务器所在的系统网卡的ip
            # s.connect(('127.0.0.1', 6666))  #服务器和客户端都在一个系统下时使用的ip和端口
        except socket.error as msg:
            print(msg)
            print(sys.exit(1))
        filepath = input('input the file: ')   #输入当前目录下的图片名 xxx.jpg
        fhead = struct.pack(b'128sq', bytes(os.path.basename(filepath), encoding='utf-8'), os.stat(filepath).st_size)  #将xxx.jpg以128sq的格式打包
        s.send(fhead)

        fp = open(filepath, 'rb')  #打开要传输的图片
        while True:
            data = fp.read(1024) #读入图片数据
            if not data:
                print('{0} send over...'.format(filepath))
                break
            s.send(data)  #以二进制格式发送图片数据
        s.close()
        # break    #循环发送
   
if __name__ == '__main__':
    sock_client_image()
Nach dem Login kopieren

###服务器端server.py
import socket
import os
import sys
import struct

def socket_service_image():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        # s.bind(('127.0.0.1', 6666))
        s.bind(('服务器的ip', 6666))
        s.listen(10)
    except socket.error as msg:
        print(msg)
        sys.exit(1)

    print("Wait for Connection.....................")

    while True:
        sock, addr = s.accept()  #addr是一个元组(ip,port)
        deal_image(sock, addr)
def deal_image(sock, addr):
    print("Accept connection from {0}".format(addr))  #查看发送端的ip和端口

    while True:
        fileinfo_size = struct.calcsize('128sq')
        buf = sock.recv(fileinfo_size)   #接收图片名
        if buf:
            filename, filesize = struct.unpack('128sq', buf)
            fn = filename.decode().strip('\x00')
            new_filename = os.path.join('./', 'new_' + fn)  #在服务器端新建图片名(可以不用新建的,直接用原来的也行,只要客户端和服务器不是同一个系统或接收到的图片和原图片不在一个文件夹下)

            recvd_size = 0
            fp = 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 = filesize
                fp.write(data)  #写入图片数据
            fp.close()
        sock.close()
        break
        
if __name__ == '__main__':
    socket_service_image()
Nach dem Login kopieren

Ergebnisse ausführen:
Server:

Python-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung

Client:

Python-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung

Ergänzend Anleitung:
1. Führen Sie zuerst server.py (python server.py) unter dem Linux-System aus, führen Sie dann client.py unter dem Windows-Python-Terminal aus und geben Sie den Namen des zu übertragenden Bildes im aktuellen Verzeichnis ein Terminal, bei dem es sich um heat.jpg handelt, können Sie sehen, dass die Bilddatei new_heat.jpg im Serverpfad angezeigt wird, was beweist, dass die Dateiübertragung erfolgreich war.
2. Beim Verweisen auf den Code im Internet gingen zunächst immer wieder die empfangenen Bilddaten verloren und das Bild konnte nicht geöffnet werden Der Grund dafür war ursprünglich 128sl, wobei l eine lange Ganzzahl ist. Wenn es den Bereich überschreitet, gehen die empfangenen Bilddaten verloren. Daher wird der Bereich nach dem Wechsel zu q größer und Bilder können normal empfangen werden . Die folgende Abbildung zeigt die Komprimierungsformat- und Datenbereichskorrespondenztabelle von struct.pack:

Python-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung
Verwandte Empfehlungen:

Python XML RPC Server- und Client-Instanzen

Detaillierte Erläuterung der Methode zur Implementierung von TCP-Server und -Client in Python

Das obige ist der detaillierte Inhalt vonPython-Code zur Implementierung der clientseitigen und serverseitigen Bildübertragung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Apr 01, 2025 pm 11:15 PM

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Apr 01, 2025 pm 11:30 PM

Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Beim Schreiben von Python -Skripten ist es üblich, die vorherige Ausgabe an die Cursorposition zu löschen ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Apr 01, 2025 pm 10:51 PM

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Apr 01, 2025 pm 11:18 PM

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Wie kann man Go oder Rost verwenden, um Python -Skripte anzurufen, um eine echte parallele Ausführung zu erreichen? Wie kann man Go oder Rost verwenden, um Python -Skripte anzurufen, um eine echte parallele Ausführung zu erreichen? Apr 01, 2025 pm 11:39 PM

Wie kann man Go oder Rost verwenden, um Python -Skripte anzurufen, um eine echte parallele Ausführung zu erreichen? Vor kurzem habe ich Python verwendet ...

Das Python -Subprozess -Modul kann den Befehl WMIC DataFile nicht ausführen. Wie löst ich es? Das Python -Subprozess -Modul kann den Befehl WMIC DataFile nicht ausführen. Wie löst ich es? Apr 01, 2025 pm 08:48 PM

Verwenden Sie das Subprozess -Modul von Python, um WMIC auszuführen ...

Wie kann ich die Python- und OCR -Technologie verwenden, um zu versuchen, komplexe Überprüfungscodes zu knacken? Wie kann ich die Python- und OCR -Technologie verwenden, um zu versuchen, komplexe Überprüfungscodes zu knacken? Apr 01, 2025 pm 10:18 PM

Die Untersuchung von Rissverifizierungscodes unter Verwendung von Python in täglichen Netzwerkinteraktionen sind ein häufiger Sicherheitsmechanismus, um eine schädliche Manipulation automatisierter Programme zu verhindern ...

Wie kann man mit dem Fehler in der Python-Multi-Process-Rohrkommunikation anmutig umgehen? Wie kann man mit dem Fehler in der Python-Multi-Process-Rohrkommunikation anmutig umgehen? Apr 01, 2025 pm 11:12 PM

Python Multi-Process-Rohrfehler "Pipe ist geschlossen"? Wenn Sie die Pipe-Methode in Pythons Multiprocessing-Modul für die Kommunikation über Eltern-Kind-Prozess verwenden, können Sie ...

See all articles