Fehler bei Dateiübertragung mit Winsck.ocx

08/02/2008 - 18:29 von Peter Hilscher | Report spam
Hallo,
ich habe mit Winsock eine Verbindung zwischen zwei Programmen
aufgebaut. Eine Funktion ist die Übertragung eines Screenshots zum
zweiten Programm.
In der Data_Arrival wird die Datei entsprechend der ankommenden Daten
gespeichert.

Nun habe ich das Problem, dass die übertragene Datei (JPG) sporadisch
defekt ist, obwohl die Dateigröße stimmt.
Ich habe nun den Verdacht, dass die Datenpakete in der falschen
Reihenfolge ankommen
bzw das Data_Arrival mehrfach aufgerufen wird.

Kann das überhaupt sein, und was kann ich dagegen tun.

Ich habe schon überlegt die Datenpakete beim senden zu nummerieren,
dann müßte ich die
empfangenen Daten aber erst im Hauptspeicher zusammensetzen, da die
Lànge der ankommenden
Pakete ja unterschiedlich sein kann. Da aber auch größere Dateien
übertragen werden sollen verbietet sich das eigentlich.

Ich bin im Moment ein bißchen ratlos und weiß nicht, wie ich mich
dem Problem weiter nàhern kann.

Gruß Peter
 

Lesen sie die antworten

#1 Schmidt
09/02/2008 - 06:40 | Warnen spam
"Peter Hilscher" schrieb im Newsbeitrag
news:

ich habe mit Winsock eine Verbindung zwischen zwei Programmen


< aufgebaut. Eine Funktion ist die Übertragung eines Screenshots zum
< zweiten Programm.
Soll der komplette Desktop übertragen werden?
Dann hàtte ich ein Beispiel zur Hand - müsste da nur nochmal
kurz drüberschauen.

Ich habe nun den Verdacht, dass die Datenpakete in der falschen
Reihenfolge ankommen
bzw das Data_Arrival mehrfach aufgerufen wird.
Kann das überhaupt sein, und was kann ich dagegen tun.


Solange Du nicht UDP, sondern TCP verwendest, kann das eigentlich
nicht sein.

Ich habe schon überlegt die Datenpakete beim senden zu
nummerieren,


Das ist normalerweise nicht nötig - Du musst nur in jedem Falle
im DataArrival alles aufsammeln und die Trenner zwischen Deinen
JPG-Haufen sowie die Lànge des JPG-Blocks genau feststellen.
Wenn Du kurz hintereinander sendest, dann ist nicht gesagt,
dass die DataArrival-Events genau auf die "Block-Grenzen"
fallen.
Und natürlich nicht mit Strings, sondern mit ByteArrays
arbeiten, um unnötige und möglicherweise fehlerhafte Unicode-
Konvertierungen der JPG-Blöcke zu vermeiden.

Wie gesagt, ich hab ein VB-Server-Beispiel, das komplette
Desktop-Inhalte als (M)JPG streamt (Client kann jeder moderne
Browser ausser IE sein - also FireFox, Opera, Safari - dazu noch
einen kleinen VB-Client zu schreiben sollte auch nicht das Problem
darstellen). Lass mich wissen, ob das von Interesse wàre.

Olaf

Ähnliche fragen