Socketprogrammierung: Recv() u. Send() - Parameter? Außerdem ein Problem mit telnet...
-
Hi,
ich habe mal eine Frage an euch, wie muss die Länge die ich an send() und recv() übergebe aussehen?
Reicht in beiden Fällen ein strlen(buf) oder muss ich beim recv() vielleicht sogar strlen(buf) - 1 als Länge übergeben?/* Wie ist es richtig? */ char buf[256]; sprintf(buf, "Hallo!"); send(s, buf, strlen(buf), 0); char buf2[256]; recv(s, buf2, strlen(buf2), 0); // oder char buf[256]; sprintf(buf, "Hallo!"); send(s, buf, strlen(buf), 0); char buf2[256]; recv(s, buf2, strlen(buf2) - 1, 0);Da bin ich mir leider total unsicher...
Außerdem habe ich noch eine Frage:
Warum kann ich mit telnet mein Programm "verwirren"?Also ich starte meinen Server und lasse meine Clients verbinden. Klappt alles perfekt. Aus Spaß habe ich mal versucht mit telnet auf meinen Server zu kommen. Verbindung steht. Bis hierhin keine Probleme. Gebe ich bei telnet aber jetzt einen Satz ein, kommt dieser Zeichenweise bei meinem Programm an. Alles noch nachvollziehbar. Doch senden nun meine eigenen Clients eine Nachricht, dann kommen die plötzlich auch Zeichenweise an. Warum? Hat jemand eine Idee, was telnet meinem Programm antut?
Mir ist es ein Rätsel... 
Vielen Dank,
DieSocke
-
Wundert mich wenn in deinem Programm so überhaupt "was ankommt", weil du offensichtlich die Grundlagen der C Programmierung noch nicht zur Genüge beherschst, als daß du dich mit Socket Programmierung auseinandersetzen solltest! Das strlen() im recv() ergibt doch überhaupt keinen Sinn, strlen() ermittelt die Länge eines nullterminierten Strings, in deinem Buffer steht nur Murks drin. Du brauchst natürlich sizeof stattdessen!
Grundlagen
-
Hi,
Folgender Post enthält eine Diskussion, die dein Problem trifft:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-224504.htmlSimon
-
Hi,
vielen Dank für eure Antworten. Jetzt ist mir auch klar, warum telnet mein Programm so durcheinander gebracht hat

Allerdings bin ich mir noch immer unsicher, ob ich nun bei recv(): sizeof(buf) - 1 oder nur sizeof(buf) schreiben sollte. Im Internet habe ich leider Code mit und ohne - 1 gefunden. Vom Prinzip her, würde ich sagen, dass das - 1 notwendig ist, da ich ja noch das \0 dran setzen muss. Liege ich mit dieser Annahme richtig?

Aufjedenfall habt ihr mir schon sehr weitergeholfen
Danke 
Viele Grüße,
DieSocke