perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 24
Click for quality!




10.02.2012 / 20:19

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragIO::Socket Daten nicht identisch
Seitenanfang
Hi,

Hab einen einfachen HTTP Clienten geschrieben.
Der einen Webserver nach einer .rar Datei fragt.

Der Webserver antwortet und schickt mir auch den Header und die Datei durch den Socket.

Um die Datei zu speichern hab ich die Headerdaten ausgelesen.
Nachdem die Zeile "Content-Length:" ausgelesen wurde, wird eine weitere Leerzeile geloescht.

Die Restlichen Daten aus dem Socket werden dann in die Datei geschrieben.
Wie folgt:

  
while($line = <$socket>){
print FILE $line;
}

wenn ich die erstellte Datei nun mit der Orginalversion vergleiche, stosse ich an rund 50 Stellen, an denen die beiden Dateien nicht identisch sind.

Hier mal ein kleines Beispiel in dem die Zeile 2897 verglichen wird

orginal file:
0.╝
1.`
2.8
3.û
4.☻
5.|
6.║
7.┘
8.
ende

file copy:
0.╝
1.`
2.8
3.û
4.☻
5.|
6.║
7.┘
ende

wie man erkennen kann ist in der orginalen Datei noch ein Leerzeichen oder Steuerungszeichen, das man nicht erkennen kann.
Wenn ich mir beim Socket auslesen, genau diese Zeile anschaue, kommt sie noch korrekt an.

Das Problem sollte also beim Datei schreiben auftreten.

Waer cool wenn mir da einer helfen koennte.
Hab schon ne menge versucht und bekomm es nicht gebacken.

mfg

gartenumgraben

Datum: 14.08.2007-13:02

Beitragre: IO::Socket Daten nicht identisch
Seitenanfang
Hallo!

Hast du das Ausgabefilehandle per

binmode FILE;
in den Binärmodus geschickt?

Grüße, Skrilax

Datum: 14.08.2007-13:27

Beitragre: IO::Socket Daten nicht identisch
Seitenanfang
Achso:

Binärdateien sollte man per read() einlesen:


binmode $socket;
binmode FILE;
while(read $socket, my($buffer), 1024) {
print FILE $buffer;
}

Grüße, Skrilax

Datum: 14.08.2007-13:32

Beitragre: IO::Socket Daten nicht identisch
Seitenanfang
jo so gehts!

jetzt klappt es

danke

Datum: 14.08.2007-15:54

-






-
-