Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C (C89, C99 und C11) ::  Telnet Buffer nach Ausgabe scannen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Evilmachine
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
Beitrag Evilmachine Mitglied 10:13:44 02.08.2012   Titel:   Telnet Buffer nach Ausgabe scannen            Zitieren

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:

C++:
1
2
3
4
5
6
7
8
9
10
11
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??
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 10:19:34 02.08.2012   Titel:              Zitieren

In welcher Zeile hast du denn das Problem?

Was ist denn RcvFifo (welcher Typ)?
Bzw. wie ist die Struktur auf die t zeigt deklariert?
Evilmachine
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
Beitrag Evilmachine Mitglied 10:24:50 02.08.2012   Titel:              Zitieren

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.
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 10:44:54 02.08.2012   Titel:              Zitieren

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).
Evilmachine
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
Beitrag Evilmachine Mitglied 11:00:34 02.08.2012   Titel:              Zitieren

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^^
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 11:36:41 02.08.2012   Titel:              Zitieren

Text suchen geht mit strstr().
Wie und ob das funktioniert kannst du auch leicht selbst testen.
Ein strstr("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!
ja. ja.
Unregistrierter




Beitrag ja. ja. Unregistrierter 11:37:05 02.08.2012   Titel:              Zitieren

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 :confused:
c++.de :: C (C89, C99 und C11) ::  Telnet Buffer nach Ausgabe scannen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.