PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : monitord 2.0 reagiert nicht auf telnet-Eingabe



faxe73
29.07.2010, 15:04
Hi und Moin Moin ;)
Ich hab's nun nach langer Zeit endlich geschafft die 2.0svn-Version aus dem trunk-Verzeichnis unter OpenSuSE 11.2 64-bit zu kompilieren und (viel wichtiger) zu starten.
Konkret gesagt:
- Dekodierung FMS und ZVEI -> OK
- Filterung mit LUA (SocketServer und PluginFilter)-> OK
- Datenübergabe an MySQL -> OK
- Datenübergabe an FMS32Pro über Port 9300 -> OK
- Datenausgabe an Telnet über Port 9333 -> OK
So weit, so gut... nu' wollt ich mich ran machen und mal ein bißchen Audio aufzuzeichnen bzw. grundlegend dazu über Port 9333 die Kommandos zu schicken...
Also, mit putty bzw. local an der Konsole 'ne Telnet-Verbindung auf Port 9333 -> Antwort "100;monitord 2.0svn READY"
Geb' ich nu' 210[ENTER] ein geschieht nix, wobei allerdings dekodierte Daten im bekannten Format (z.B. 310:1280408372:1:6B526773:F:1:0:2) gesendet werden.
Irgendwie nimmt der Server keine Eingabe an, bzw. verarbeitet sie nicht.

Ich hoffe der Fehler liegt nicht bei mir zwischen den Ohren und es kann mir jemand 'nen Tip geben.
MfG

mdi
30.07.2010, 21:16
Moinmoin,

SocketThreadMonitord.cpp, Zeile 67:
"len=parserTemp.length(); // war: len=parserTemp.length()-2;"
-> hier hat noch keiner CRLF-Tests eingebaut. Schreib Dir die "-2" mal wieder dazu, sollte tun eigentlich auf einem Linux. Neu compilieren - testen - feedbacken ;)!

Viel Erfolg :)
Martin

faxe73
31.07.2010, 00:45
So, erstes Feedback...
SocketThreadMonitord.cpp entsprechend geändert... make clean; make; make install
aber... immer noch das selbe Problem :(

hab mir mal die Funktion processInput(), woraus parseCommand() aufgerufen wird, angeschaut und einfach mal
FILE_LOG(logDEBUG) << "Input received... parsing... " ;
zwischen Zeile 115 und 116 ( if (parseCommand()) ) eingefügt. Wenn eine zu prüfende Eingabe vorliegt, dann muss ich auch 'ne DEBUG-Ausgabe im Log haben, was aber nicht der Fall ist... :(
Würd sagen, dass der Hänger weiter "vorne" liegt... aber dat guck ich mir jetzt nicht mehr an... muss erstmal Augenpflege machen...

TO BE CONTINUED...

+++ Nachtrag +++ Nachtrag +++ Nachtrag +++ Nachtrag +++

In SocketServer.cpp Zeile 721 bis 725 wird auf Socket Ereignis geprüft und ggf. "Socket reports read event" ins logDEBUG geschrieben... aber auch hier Fehlanzeige. Folglich kommt irgendwie kein Socket Ereignis zu stande...

faxe73
31.07.2010, 15:14
Fehler gefunden! ;)

SocketServer.cpp (trunk-Version)



719: int result = select(1, &fdset, NULL,&fdset_exceptions, &tv);



SocketServer.cpp (2.0-070808-RC1-Version)



543: int result = select(m_fd+1, &fdset, NULL,&fdset_exceptions, &tv);



Klein aber fein der Unterschied... und schon klappt's... zumindest krieg ich die Commandos zum Server gesendet.

Folgende Fehler bei der Kommando-Verarbeitung konnte ich schon mal feststellen:
1. Nach dem telnet-Verbindungsaufbau "100;monitord 2.0svn READY" wird das erste Kommando nicht verarbeitet:
-> Telnet-Antwort:


100;monitord 2.0svn READY
210;
101:004

-> Log-Eintrag:


ERROR: monitord/SocketThreadMonitord.cpp(125) Fehler bei der Cmd Konvertierung: ˙û˙û ˙û˙û'˙ŭ˙û˙ŭ˙ĝ210

-> Das Kommando danach wird verarbeitet
2. Alle Kommandos müssen zwei Zeichen am Ende haben z.B. 210;[space] oder 210[space][space] damit die 210 erkannt wird. Kommandos mit Parameter hab ich noch nicht geprüft.
3. Das Inquiry-Kommando (210) gibt irgendwie nicht alles wieder... z.B. die Plugins REC und MYSQL fehlen:


210;
111:1:6d6f6e69746f7264
111:2:4c494e5558
111:3:0020
111:4:0004
111:5:
111:0


Sobald ich weiter bin, poste ich an dieser Stelle...
Gibt's eigentlich irgendwo 'ne Doku zum Protokoll 0.4!?

CU & MfG

faxe73
31.07.2010, 19:38
Neue Erkenntnisse...

Zu 1:
Fehler lag an putty. Da wird irgendwas gesendet nach dem Verbindungsaufbau. An der Konsole mit und mit Windows-Telnet gibt's keine Probleme.

Zu 2:
Hatte noch die Code-Korrektur von mdi drin. "-2" wieder entfernt und alles ist gut ;)

Zu 3:
Die Rückmeldung über die Plugins ist im Code noch nicht implementiert.

Zusatz:
Die Audioaufzeichnung wurde gegenüber der 2.0-070808-RC1-Version deaktiviert mit dem Verweis auf eine notwendige Umstrukturierung... ist jemand da schon weiter oder im Bilde wie das vonstatten gehen soll - grade in Hinsicht auf die Datenstruktur von m_monitor?