Hallo Ich habe einen Client und eine Server-Architektur mit Sockets in Python zum Übertragen von Dateien gemacht. Es funktioniert einwandfrei in Windows, aber in Ubuntu funktioniert es nicht. In Ubuntu gibt es keinen Fehler, aber die ganze Datei wird nicht gesendet. Wenn ich versuche, eine Musikdatei von 4MB zu senden, werden nur 50-60kB übertragen, während in Windows sogar eine Datei von 300MB perfekt gesendet wird. Hier ist mein Code.Dateiübertragung in Python mit Socket
Mandanten-
def sendFile(self):
# ''' Print a language constructed from
# the selections made by the user. '''
# print('%s!' % (self.recipient.displayText()))
client_socket.send("upload")
time.sleep(1)
client_socket.send(self.virtual_os[self.os_box.currentIndex()].title())
time.sleep(1)
path = self.recipient.displayText() #inputbox which contains the path of the file
self.recipient.setText('')
name = path.split('/')
name = name[len(name)-1]
print "Opening file - ",name
client_socket.send(name)
time.sleep(1)
fp = open(path,'rb')
data = fp.read()
fp.close()
size = os.path.getsize(path)
size = str(size)
client_socket.send(size)
time.sleep(1)
client_socket.send(data)
print "Data sent successfully"
Server-
choice = client_socket.recv(1024)
if(choice == "upload"):
virtual_os = client_socket.recv(1024)
print virtual_os
fname = client_socket.recv(1024)
print "recieved file "+fname
size = client_socket.recv(1024)
size = int(size)
print "The file size is - ",size," bytes"
size = size*2
strng = client_socket.recv(size)
fp = open(fname,'wb')
fp.write(strng)
fp.close()
print "Data Received successfully"
Gibt es ein Problem mit meinem Code oder habe ich etwas zu ändern, es auf Ubuntu funktioniert?
Warum Sie nicht nur 'len (Daten) verwenden' statt 'os.path.getsize()'? –
os.path.getsize() funktioniert gut, weil ich die Größe drucke und es druckt die richtige Größe, aber ich versuchte mit len (Daten) auch noch nicht funktioniert. Und das Problem ist nur in Ubuntu. Irgendwie wird nur ein Teil der Daten gesendet. –