Guten Morgen,
ich möchte für meinen RPi ein Socket-Server in C schreiben, der folgende Aufgaben erfüllen muss und von einem PHP-Client kontaktiert wird
Überwachung von ttyAMA0
Befehler vom RS485-Bus empfangen
Verbindungen vom PHP-SocketClient akzeptieren
Message einlesen
Prüfen bzw. interpretieren
Message via ttyAMA0 senden
Auf Antwort ttyAMA0 warten
Antwort an SocketClient senden
nächste Message Einlesen
wie vor
Daraus ergeben sich u. A. folgende Fragen/Anforderungen
- Der SocketServer und ttyAMA0-Server dürfen das Programm nicht blockieren, wie sind die optimalen Einstellungen insbesonder für den Socketserver, bei ttyAMA0 habe ich das im Griff
- Wie erkenne ich, dass der Client nach der letzten Message aufgelegt hat
- read setzt z. Zt. offenbar nicht die errno sondern liefert nur die Anzahl der gelesenen Zeichen zurück. Das nutze ich z. Zt. als Zeichen, dass der Client aufgelegt hat. Stimmt das oder mache ich etwas falsch?
- kann ich beim Socketserver (insbesonder beim Accept und Read TimeOuts nutzen und wie stelle ich sie ein. Bei ttyAMA0 hat es gklappt. Steht das im Widerspruch zu nichtblockierenden Sockets?
- Was genau ist zu tun, um aus dem C-Programm ein Daemon zu machen
- sind tcp-Sockets oder udp bei diesen Anforderungen besser.
Insgesamt habe ich bereits einen Code, der nur unvollkommen funktioniert und würde das gern mit eurer Hilfe absolut wasserdicht machen und bin für jede Unterstützung dankbar. Die Hinweise und Bespiele im Netz habe ich natürlich gesichtet. Bislang habe ich nur Beispiele gefunden, die das Verfahren grundsätzlich erklären.
mfg
uli