Ich habe versucht, Code zu schreiben, um ein Bild an den Server zu senden, der es modifiziert und sendet es zurück an den Client. Ich sende das Bild in Teilen der Länge 1024. Die Idee war, einige Bildbearbeitung mit Opencv auf der Serverseite zu tun und dann das Bild zurück zum Client zu senden. Allerdings hält mein Client-Code jedes Mal die Ausführung an, bevor das Bild empfangen wird. Ich habe das Gefühl, dass dies ein Synchronisierungsproblem ist. Der Client ruft recv auf, bevor der Server die Image-Datei (Client.py) erstellt. My Server-Side-Code:Senden und Abrufen eines Bildes durch Socket-Programmierung in Python
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print("Server is ready to service...")
while 1:
connectionSocket, addr = serverSocket.accept()
res = ''
while 1:
t = connectionSocket.recv(1024)
if not t:
break
res += t
g = open("Client.jpg", "wb")
g.write(res)
g.close()
print("Image received and recreated")
f = open("Client.jpg", "rb")
#print(len(f))
print("Sending image data...")
while 1:
print("In while")
#data = f.read(1024)
if not data:
break
connectionSocket.send(data)
print("Data sent:"+str(len(data)))
connectionSocket.close()
Der Client-Seite Code:
from socket import *
import time
serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
Image = open("BG.jpg", "rb")
print("Sending image data...")
while 1:
data = Image.read(1024)
if not data:
break
clientSocket.send(data)
#print(len(data))
print("Data has been sent!")
print("-------------------")
time.sleep(3)
print("Receving data")
res = ''
while 1:
print("in while")
t = clientSocket.recv(1024)
print(len(t))
if not t:
break
res += t
g = open("Response.jpg", "wb")
g.write(res)
g.close()
clientSocket.close()
Bitte lassen Sie mich wissen, wenn ich mehr Informationen zur Verfügung stellen soll.
Die Ausgabe von beiden Seiten ist nicht viel. Ausgabe auf Client-Seite:
Sending image data...
Data has been sent!
-------------------
Receving data
in while
Ausgabe auf Server-Seite:
Server is ready to service...
Image received and recreated
Sending image data...
In while
Dies ist die Ausgabe, nachdem ich den Code laufen für etwa zwei Minuten laufen lassen, bevor er unterbrochen wird.
könnten Sie bitte die Ausgabe des Programms auch posten? –
Ich habe es getan. –