String != String???? HELP PLEASE
-
Hallo!
Ich schreibe mir gerade eine eigene kleine IRCD, klappt auch soweit ganz gut, aber wenn ich versuche eine Notice vom server an einen client zu schicken, kommt diese verstuemmelt an:
die notice sieht so aus:
":server!admin@dragonius-irc.net NOTICE nickname :Welcome to the DragoniusIRCD"
wenn ich diese nachricht mit dem entsprechenden nickname fuer meinen testuser speichere, sodass sie allerdings dann nur fuer den einen nickname gebraucht werden kann, kommt die notice auch richtig an. ich gebe also quasi den nicknamen im programmcode schon an, an den die notice gehen soll.memset(msg,0,1028); strcpy(msg,":server!admin@dragonius-irc.net NOTICE "); strcat(msg, nick); strcat(msg," :Welcome to the DragoniusIRCD\r\n");
mit der obigen funktion baue ich die nachricht quasi "manuell" zusammen wobei der nick aus einem array geladen wird. wenn ich nun die nachricht mit printf() ausgebe wird sie auch wie gewuenscht mit dem richtigen nick in der mitte dargestellt. sobald ich die nachricht allerding dann an den client abschicke, kommt sie verstuemmel an und das "welcome" wird komplett weggeschnitten. habe ich irgend etwas vergessen oder falsch gemacht? die message wird richtig auf meinem server dargestellt, aber sie ist offenbar noch falsch. wo liegt der fehler? muss ich evt. noch einen string null-terminieren? wenn ja wo und wie?
fuer ideen bin ich sehr dankbar
gruss und danke
dragonius
-
Also wenn der String richtig zusammengesetzt ist und du ihn problemlos ausgeben kannst, dann wird wohl das Zusammensetzen passen ;).
Zeig mal wie du deine Nachricht an den Client sendest. Ich vermute, dass eher dort das Problem liegt.
-
send(s,msg,strlen(msg),0);
-
Schaut richtig aus. Probier mal, ob sich was ändert, wenn du zu deinem strlen(msg) noch +1 schreibst.
PS: Eventuell liegts auch an der anderen Seite, also beim Empfangen.
-
Wie groß ist dein Messagebuffer msg?
-
@geo
Ich vermute mal mind. 1028, da er msg mit memset entsprechend initialisiertLeider kann der Fehler auch daran nicht liegen, aber es gut möglich, dass der Empfangspuffer beim Client zu klein ist.