Telnet Buffer nach Ausgabe scannen
-
Hallo,
ich habe ein kleines Problem.
Und zwar habe ich eine Telnet Verbindung aufgebaut und muss jetzt den Buffer nach einer bestimmten Phrase.
In meinem Fall Test Ok oder Test fehlgeschlagen. Aber irgendwie klappt das nicht so ganz.
Mein Aufruf funzt im Moment so:
strcpy(tcp_buf, "/mnt/flash/testscript\n"); IOCall(6, (BYTE *) & t->XmitFifo, tcp_buf, strlen(tcp_buf)); sdelay(2000); l = IOCall(0, (BYTE *) & t->RcvFifo); /* asks for character on TCP */ szResult = strstr(&t->RcvFifo, szFind); if(szResult != NULL) printf("Test Ok found"); if (l) { /* if characters available */ for (i = 0; i < l; i++) tcp_buf[i] = IOCall(1, (BYTE *) & t->RcvFifo); /* reads characters to buffer */ sendblk(tcp_buf, l); /* and sends the buffer content to COM1 */
Hat einer ne Idee wie ich jetzt den Buffer nach diesen Phrasen scanne??
-
In welcher Zeile hast du denn das Problem?
Was ist denn RcvFifo (welcher Typ)?
Bzw. wie ist die Struktur auf die t zeigt deklariert?
-
t ist ein Objekt von TCP Alloc (ist wieder diese CPK Geschichte)
Ich versuche hier szResult = strstr(&t->RcvFifo, szFind);
Die Phrase die in szFind definiert ist im Buffer RcvFifo zu suchen. Rcvfifo ist die komplette Ausgabe die über den Telnet Port zurückkommt. Und in dieser Ausgabe muss ich das halt finden.
-
Evilmachine schrieb:
t ist ein Objekt von TCP Alloc (ist wieder diese CPK Geschichte)
Wenn ich mir deine letzten Post ansehe, ist t vom Typ TCP_t
Evilmachine schrieb:
Ich versuche hier szResult = strstr(&t->RcvFifo, szFind);
Ist der Inhalt von RcvFifo überhaupt '\0'-terminiert?
Bei deiner letzten Anfrage wurde schon geschrieben, dass dieses Theme besser im Linux-Unterforum aufgehoben ist, da die Funktionen die du benutzt kein Standard-C sind (mal str___ ausgenommen).
-
Teilweise ja.
\x1b[01;34m[cd49f4e.py.meinberg.de] \x1b[01;31mtimeserver \x1b[01;34m~ #
Das ist dann zum Beispiel das Login Prompt.
Aber bei der Rückgabe des Test Ok steht nur Test Ok\x0d\x0a
Und es soll ja nur nach Test Ok gescannt werden.
Habe es nach C99 gepackt weils eher ne reine Theroie Frage ist wie man einen Buffer nach Text scannt^^
-
Text suchen geht mit
strstr().
Wie und ob das funktioniert kannst du auch leicht selbst testen.
Einstrstr("Ok\n\r","Ok");
funktioniert.Wenn die Parameter für
strstr()
nicht passen, kommt Mist raus.
Es liegt also an dir, diese passend zu machen.Wo stehen die Texte die du da zitierst?
Im Debugger?
Eine Testausgabe mit printf() ?
Oder... ?Wo genau ist das Problem?
"Aber irgendwie klappt das nicht so ganz." gilt nicht als Fehlerbeschreibung.Kommt nie das "Test Ok found"?
Gibt es irgendwelche Compilermeldungen?
Auch Warnungen muss man ernst nehmen!
-
wenn du mit strstr im string "Test Ok\x0d\x0a" nach "Test Ok" suchst,
dann wird ein zeiger ungleich null geliefert, also ein positives suchergebniss.
oder was verstehe ich jetzt falsch