phpchris
Goto Top

UDP-Dienst erstellen

Hallo, ich wollte mal nachfragen, ob jemand von euch einen Ansatz für mich hat, wie ich einen UDP-Dienst unter Linux realisieren kann.
Folgendes soll gemacht werden:

es soll ein Dienst auf einem bestimmten Port lauschen und bei Anfrage soll er einen String zurückgeben.
Ist so etwas relativ einfach zu realisieren?

Sorry für die vielleicht blöde Frage, aber ich weiss echt nichtmal ansatzweise, wie ich das realisieren kann...

Content-Key: 6990

Url: https://administrator.de/contentid/6990

Printed on: April 18, 2024 at 00:04 o'clock

Mitglied: 7217
7217 Feb 16, 2005 at 16:35:18 (UTC)
Goto Top
Es gibt ein Programm namens nc (oder netcat, je nach Distribution), was dieses wohl kann. Mit "man nc" erfährst du mehr darüber. Wäre, je nach Anwendungsfall, das einfachste Mittel, denke ich.

Mupfel
Member: phpchris
phpchris Feb 17, 2005 at 07:27:26 (UTC)
Goto Top
Danke, das werde ich gleich mal probieren...
Member: phpchris
phpchris Feb 17, 2005 at 12:41:07 (UTC)
Goto Top
So weit so gut, nur dass netcat nach jeder erfolgreichen Verbindung sich beendet.
Weiss jemand weiter?
Member: phpchris
phpchris Feb 17, 2005 at 13:04:31 (UTC)
Goto Top
Kann mir evtl. jemand dieses Script erklären?

Da sich netcat beim Ende der Verbindung beendet, kann es nur eine einzige Verbindung bedienen. Wer eine Lösung sucht, bei der netcat mehrere Verbindungen (nacheinander oder gleichzeitig) entgegennimmt, kann das folgende, 3-zeilige Shellscript verwenden:

$ cat <<EOF>mydemon
#!/bin/bash
export port=${port:-$1} # inherit $1 as $port
nc -l -p $port -e $0 & # await further connections on this port
EOF
$ chmod +x mydemon
$ ./mydemon 3000
$
Member: phpchris
phpchris Feb 17, 2005 at 13:20:25 (UTC)
Goto Top
Niemand?

Ich habe das Skript hier her: http://www.jfranken.de/homepages/johannes/vortraege/netcat.de.html

Irgendwie gibt es mir jedoch eine Fehlermeldung aus, das der Port $1 inkorrekt ist.

Kann mir das Skript denn niemand erklären?
Mitglied: 7217
7217 Feb 17, 2005 at 13:46:16 (UTC)
Goto Top
Versuche mal folgende Zeile:

[mupfel@ocean ~]$ while true; do nc -l -p 4711 < index.htm ; done

Mupfel
Member: phpchris
phpchris Feb 17, 2005 at 14:36:51 (UTC)
Goto Top
Danke, das hat funktioniert...
Mitglied: 7217
7217 Feb 17, 2005 at 14:47:32 (UTC)
Goto Top
fein

manchmal kann das Leben so einfach sein face-smile

Mupfel
Member: phpchris
phpchris Mar 11, 2005 at 07:46:49 (UTC)
Goto Top
Eine Frage habe ich jetzt doch wieder.
Wenn ich das Script aufrufe, muss ich die Shell beenden.
Kann ich das Script irgendwie so modifizieren, dass ich danach weiter per SSH arbeiten kann?

Oder kann ich es irgendwie anders aufrufen?
Mitglied: 7217
7217 Mar 11, 2005 at 07:55:33 (UTC)
Goto Top
Ähm... ja, gute Frage... ich habs jetzt mal mit STRG-Z in den Hintergrund gejagt und dann mit "fg" wieder nach vorne geholt, wobei es sich dann jedesmal zuverlässig und reproduzierbar auf meinem System verabscheut hat (was in meinen Augen eigentlich NICHT nachvollziehbar ist).

Vielleicht klappts ja bei dir ähnlich... du könntest es mit STRG-Z in den Hintergrund schieben (supendieren) und dann mal diverse KILL-Versuche unternehmen.

regards, Mupfel
Member: phpchris
phpchris Mar 11, 2005 at 08:29:13 (UTC)
Goto Top
Nun ja, Problem ist, dass es bei Systemstart ausgeführt werden soll.

Wenn ich das nun ganz üblich als Link in rc5.d mache, bootet der VM-Rechner da nicht weiter.

P.S.: Ich schreibe VM-Rechner, damit du dir keine Sorgen machen musst. Ist nur eine VM-Ware und kein Produktivsystem ;)
Mitglied: 7217
7217 Mar 11, 2005 at 08:31:50 (UTC)
Goto Top
Hum... vielleicht findet sich hier noch eine Lösung... im Moment fällt mir jedoch nix ein, sorry.

Mupfel
Member: phpchris
phpchris Mar 11, 2005 at 08:33:29 (UTC)
Goto Top
Vielen Dank soweit...
Member: phpchris
phpchris Jul 27, 2005 at 15:26:34 (UTC)
Goto Top
OK, habs rausgefunden.
Wenn man das in eine .sh Datei packt, ruft man die in der /etc/boot.local mit einem & am Ende au, dann bootet der Server durch.
Also etwa:

sh /opt/proc/myserver.sh &