Hi, Am 30.07.2003 00:31 schrieb Michael Matz:
On Wed, 30 Jul 2003, Martin Knipper wrote:
Die Zeichenketten sind teilweise aneinander gekettet oder überlappen sich, je nach länge der Zeichenkette (trotz Einhaltung der Feldgrößen).
Wie genau? Wenn du z.B. data.ID ausgibst sind dort Zeichen aus data.TIME drin? Das kann nicht sein, wenn du das gesendete data korrekt gefuellt hast. sendto/recvfrom murksen nicht am Inhalt herum, also landet data genau so beim Empfaenger wie sie beim Sender reingesteckt wurden. Natuerlich musst du ne korrekte Fehlerbehandlung auch auf der Empfaengerseite machen, und z.B. auch pruefen, ob die Pakete Tatsache vom sender kamen.
Besteht die Möglichkeit, die Struktur sauber zu füllen und sauber wieder auszulesen,
Naja, ein strncpy (data.ID, "blabla", sizeof (data.ID)); data.ID[15] = 0; ist sauber genug, wenn's bloss Strings sein sollen. Ansonsten am Beginn noch ein memset (&data, 0, sizeof (data));
Wie fuellst/liest du denn deine Struktur?
Mein Problem lag darin, dass ich die Strings nicht Nullterminiert habe und bis an die Grenze gegangen bin (Also einen 16 Zeichen langen String in Data.ID geschrieben habe). Die Vorgabe, die ich erhalten habe, sagt, dass ein genau 16 Zeichen langer String in das Feld Data.ID[16] gehört. Ich sollte das Feld also auf 18 Zeichen erhöhen und ein \0 an die 16stellige Zeichenkette anhängen. Habe es auch ausprobiert und es funktioniert. Danke für die Hilfe. Gruß Martin