TCP Datenaustausch in Abhängigkeit der Eingabe des Nutzers
-
In Zeile 17 wird festgelegt, was der Server zurücksendet.
Die kannst du ersetzen mit zum Beispiel sowas:if (!strcmp(buf, "version")) sprintf(buf2, "Meine Version ist 0.1"); else if (!strcmp(buf, "hallo")) sprintf(buf2, "selber hallo"); else if (!memcmp(buf, "reverse ", 8)){ int arraylen = strlen(buf + 8); for (int i = 0; i < arraylen; i++) buf2[i] = buf[arraylen - 1 - i]; } else sprintf(buf2, "unbekanntes Kommando");
Das kannst du natürlich in eine Funktion schreiben, wäre wahrscheinlich auch sinnvoll.
createResponse(const char *input, const char *output, bufferlength); Zeile 17: createResponse(buf, buf2, sizeof buf2);
Edit: Die Forenuhr geht vor.
Edit2: Meine Uhr ging nach -.-
-
nwp2 schrieb:
Edit: Die Forenuhr geht vor.
ich geb mal ne runde *kaffee* aus, hätt ja nicht gedacht das hier um die uhrzeit der bär steppt
-
erst ma danke für die schnellen antworten. ich werd gleich mal ein paar sachen probieren.
-
du kannst auch einfache ne getarnte struct übergeben und auf der anderen seite auslesen:)
-
nwp2 schrieb:
... else if (!memcmp(buf, "reverse ", 8)){ ...
denke du dachtest eher an sowas
... else if (strlen(buf) > 7 && memcmp(buf, "reverse ", 8)==0){ ...
-
noobLolo schrieb:
denke du dachtest eher an sowas
... else if (strlen(buf) > 7 && memcmp(buf, "reverse ", 8)==0){ ...
Wieso das denn?
buf ist länger als 8 Zeichen (>=256), sonst geht das alles sowieso nicht.
So paranoid dass ich sinnlose Absicherungen mache bin ich noch nicht. Aber ein bisschen nachbearbeitet werden sollte es noch:const char reverse[] = "reverse "; if ... ... else if (!memcmp(buf, reverse, sizeof reverse - 1)){ int arraylen = strlen(buf) - sizeof reverse + 1; for (int i = 0; i < arraylen; i++) buf2[i] = buf[sizeof reverse - 1 + i]; }
Vielleicht sollte man auch ein const int reverseLength = sizeof reverse - 1; definieren.
-
nwp2 schrieb:
noobLolo schrieb:
denke du dachtest eher an sowas
... else if (strlen(buf) > 7 && memcmp(buf, "reverse ", 8)==0){ ...
Wieso das denn?
buf ist länger als 8 Zeichen (>=256), sonst geht das alles sowieso nicht.Der dritte Parameter gibt die Anzahl der zu lesenden Bytes an. Ist dies mehr, als vorhanden sind, so kehrt recv mit weniger als len Bytes zurück
... else if (rc > 7 && memcmp(buf, "reverse ", 8)==0){ ...
-
Ich verstehe trotzdem nicht wozu du auf strlen(buf) > 7 testen willst.
-
nwp2 schrieb:
Ich verstehe trotzdem nicht wozu du auf strlen(buf) > 7 testen willst.
ja ok strlen(buf)>7 ist nicht die super idee
aber
else if (rc > 7 && memcmp(buf, "reverse ", 8)==0){
mußt du zugeben ist schon nicht so schlecht
-
Habs jetzt mit strcmp gemacht. Funktioniert bestens
Danke nochmal.
So ein int i in der For-Schleife funktioniert übrigens im normalen c nich. Keine Ahnung wieso, aber da meckert der Compiler.lg
-
Ratsuchender schrieb:
So ein int i in der For-Schleife funktioniert übrigens im normalen c nich. Keine Ahnung wieso, aber da meckert der Compiler.
das geht ab C99