Ich versuche, eine Bilddatei mit Socket-Programmierung in Python zu senden. Ich bin in der Lage, eine Textdatei zu senden. Aber ich habe versucht, eine Bilddatei zu senden, indem ich sie öffne und den Inhalt der Bilddatei in einer Zeichenkette lese und dann die Zeichenkette sende und auf der Client-Seite empfange und sie dann in eine Datei mit demselben Namen in einem anderen Verzeichnis schreibe, aber ich kann die Datei nicht öffnen. Auch ich poste meinen Code unten, die kommentierten Teile sind ein Hinweis darauf, dass ich es bereits versucht habe. Außerdem habe ich Probleme beim Senden der Ganzzahl size
aber ich erhalte eine zufällige Zeichenfolge auf der anderen Seite.
Dies ist das Server-Skript
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 5000))
server_socket.listen(5)
import os
client_socket, address = server_socket.accept()
print "Conencted to - ",address,"\n"
while (1):
choice = client_socket.recv(1024)
choice = int(choice)
if(choice == 1):
data = client_socket.recv(1024)
print "The following data was received - ",data
print "Opening file - ",data
fp = open(data,'r')
strng = fp.read()
size = os.path.getsize(data)
size = str(size)
client_socket.send(size)
client_socket.send (strng)
#client_socket.close()
if (choice == 2):
data = client_socket.recv(1024)
print "The following data was received - ",data
print "Opening file - ",data
fp = open(data,'r')
strng = fp.read()
#strng = str(fp)
size = os.path.getsize(data)
print size
size = str(size)
print size
client_socket.send(size)
client_socket.send (strng)
#client_socket.close()
Und dies ist das clientseitige Skript -
#!/usr/bin/python
# TCP client example
import socket,os
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("", 5000))
k = ' '
size = 1024
while(1):
print "Do you want to transfer a \n1.Text File\n2.Image\n3.Video\n"
k = raw_input()
client_socket.send(k)
k = int (k)
if(k == 1):
print "Enter file name\n"
strng = raw_input()
client_socket.send(strng)
size = client_socket.recv(1024)
size = int(size)
print "The file size is - ",size," bytes"
size = size*2
strng = client_socket.recv(size)
print "\nThe contents of that file - "
print strng
if (k==2):
print "Enter file name of the image with extentsion (example: filename.jpg,filename.png) - "
fname = raw_input()
client_socket.send(fname)
size = client_socket.recv(1)
print size
#size = int(size)
print "The file size is - ",size
size = size*2
strng = client_socket.recv(256456)
print "\nThe file will be saved and opened- "
fname = 'downloads/'+fname
nf = open(fname,'w')
nf.write(strng)
nf.close()
fname = 'viewnior '+ fname
print fname
os.system(fname)
Ich programmiere auf Crunchbang Linux - Inoffizielle Debian basierte Distro viewnior ist der Bildbetrachter.