[Python-de] Dateien ueber Sockets uebertragen
Alexander 'boesi' Bösecke
boesi.josi at gmx.net
Mit Mar 31 11:55:13 CEST 2004
moin
Ich hab mir zu Lernzwecken einen Server geschrieben, bei welchem ein
Client eine beliebige Datei anfordern kann und der Server sendet diese
dann sofern vorhanden.
Hier erstmal der Quelltext des Servers zum Senden der Datei:
file = open(f_path, 'rb')
while 1:
data = file.read(1024)
if not data: break
self.connection.send(data)
Und hier der Quelltext des Clienten zum empfangen:
recvBytes = 0
while file_size > recvBytes:
data = sockobj.recv(1024)
file.write(data)
recvBytes += len(data)
print file_size, ' - ', recvBytes
file_size wird vorher vom Server uebertragen und entspricht natuerlich
der Dateigröße
Lokal funktioniert das auch, nur wenn Server und Client auf
unterschiedlichen Rechnern laufen, bekomm ich vom Clienten folgende
Ausgabe:
[...]
17684 - 14336
17684 - 15360
17684 - 16384
17684 - 16669
Dann haengt der Client. Wenn ich den Clienten beende, ist die
uebertragene Datei genau diese 16669 Bytes groß.
Der Server dagegen beendet ganz normal die Uebertragung und wartet auf
die naechste Anforderung.
Bei anderen Dateien sieht das aehnlich aus, es fehlen anscheinend immer
etwas weniger als 1024 Bytes.
Vielen Dank fuer eure Hilfe
boesi
--
Ein Wunder muss heute schon ganz schoen #1671 : icq-intern
wundervoll sein um ein Wunder zu sein, #73628288 : icq-extern
sonst wuerde man sich ja gar nicht mehr wundern boesi111 : aim
.-==Prof. Dr. Harald Lesch==-. i171 : reallife