PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pufferunf verschluckt daten bei TCP Verbindung



mithras
26-09-2002, 14:42
Habe ein Programm A, das prüft, ob Prog. B läuft, (Programm B ist so programmiert, dass es wenn es läuft an einem bestimmten Port lauscht (accept)- schleife).
Programm A versucht nun zu Programm B zu connecten, falls dies nicht gelingt, wird mit fork ein zweiter Prozess gestartet, mit dem mit exec Programm B gestartet wird, nach dem die Ausführung von Programm A einige Sekunden angehalten wurde also der elternprozess, als Kind läuft ja Programm B, connected Programm A zu B, und sendet Daten.

Das Problem.

Wenn Prog. B noch nicht läuft, und es wird über eine Meldung die Prog. A an Prog. B schickt, Prog B gestartet, kommt die Meldung nicht an! Es findet eine Art verschiebung statt, d.h.
wenn ich mit dem Text "hallo 1" Programm B starten will, erscheint zunächst auf Programm B gar nichts, erst wenn ich dann eine zweite Meldung schicke, z.B. hallo 2 erscheint "hallo 1" usw.

An was liegts?

mithras
26-09-2002, 15:01
ich glaub ich hab das prob gefunden...hab jetzt an den array ein newline zeichen angehängt!
is aber komisch weil früher ging das auch ohne bzw. mit dem nullzeichen.

Früher: (wo es nur teilweise funktionierte):

Array empfangen darin wird der text gespeichert:

empfangen[bytes] = '\0';




Jetzt (so funktioniert das ganze nun auch komplett:)

empfangen[bytes] = '\n';
empfangen[bytes + 1] = '\0';


Allerdings schneint es mir nun als ob es teilweise bufferowerflows oder ähmliche probs gibt, ist das möglich?

anda_skoa
26-09-2002, 16:16
Bufferoverflow gibt's nur dann, wenn du in einen Array schreibst und den Index nicht kontrollierst.

Oder wenn du eine Stringoperation machst (strcat und ähnliches) und im Zielpuffer nicht genug Platz ist.

Ciao,
_