Entwickler-Ecke
Internet / Netzwerk - Blockierendes UDP Socket ->Probleme?
Flamefire - Mi 13.01.10 22:33
Titel: Blockierendes UDP Socket ->Probleme?
Habe z.Zt. Folgendes vor:
Damit mein Vater über Skype mit seinen Eltern telefonieren kann, richte ich auf deren PC Wake On LAN ein.
Jetzt kann ich mit einem einfach Delphi-Programm den anderen PC hochfahren. Skype wird gestartet, es klingelt, alles super.
Jetzt sind die aber mal nicht da, der PC läuft. Dumm. Also muss ich ihn wieder runterfahren.
Da ich für WOL schon einen Port durchleiten muss, wollte ich jetzt einfach ein Mini-Programm schreiben, dass im Hintergrund läuft und auf einen Schlüssel in einem Paket an dem Port lauscht und dann den PC runterfährt.
Eigendlich sollte dafür doch ein Konsolenprogramm und ein blockierendes UDP-Server-Socket reichen.
Also mit RecvFrom am Socket hängen und alle Pakete abfangen, prüfen, handeln.
Frage ist jetzt: Wie kriege ich es hin, dass kein Konsolenfenster mit der Meldung "Programm reagiert nicht mehr" offen bleibt? Im Hintergrund wäre es schön (man braucht nix sehen), aber wie geht das?
Dann wäre noch: Gibt es Timeouts o.ä. was mir den Spaß vermießen könnte? Und was ist beim normalen Herunterfahren des PCs? Bleibt der dann hängen, weil das Programm blockiert?
FinnO - Mi 13.01.10 22:49
Vorsichtig geantwortet:
Multithreadening?
Flamefire - Mi 13.01.10 23:17
eigendlich nicht nötig. Ich habe ja kein Problem damit, dass er blockiert. Er soll ja nix andres machen, außer horchen ^^
BenBE - Mi 13.01.10 23:38
Und wozu ein Blocking Socket nehmen? Würde das eher über ein Non-Blocking-Socket regeln ...
Ansonsten Über ein Sockeet-Timeout handhaben und immer beim Timeout App.ProcessMsgs aufrufen ...
Astat - Do 14.01.10 10:12
Flamefire hat folgendes geschrieben: |
| Frage ist jetzt: Wie kriege ich es hin, dass kein Konsolenfenster mit der Meldung "Programm reagiert nicht mehr" offen bleibt? |
Hi, lösch einfach in der *.dp deiner Console folgenden Eintrag.
lg. Astat
Moderiert von
Narses: Zitat repariert.
Xentar - Do 14.01.10 11:14
Wie liest du Daten aus dem Socket? Normalerweise kann man da noch nen Timeout angeben. Diesen dann auf 100ms oder so setzen, und das ganze regelmäßig ausführen.
Astat hat folgendes geschrieben : |
Hi, lösch einfach in der *.dp deiner Console folgenden Eintrag.
|
Naja.. dann bleibt halt ein Windows Fenster offen, dass nicht mehr reagiert.. :D
Ging ihm nicht um die Konsole, sondern wohl darum, dass die Software nicht mehr reagiert.
Xearox - Do 14.01.10 15:54
also, ich kenne mich mit Delphi so gut wie garnicht aus, aber nur so als Idee...
Wie wäre es denn mit einem, hmm...sagen wir mal, idle Programm...
Das Programm, wie auch der Bildschirm schoner, prüft, ob irgendetwas am pc gemacht wird.
Ob die Maus zu bewegen oder eine Taste zu drücken...
Falls nichts dergleichen Passiert, wird der PC einfach herunter gefahren, so wie das auch in der Energie verwaltung steht,...
bspw. nach 20min wird Bildschirm ausgemacht, nach 60min fährt der PC runter.
denn ich sag mal so, wenn man skyped, dann drückt man sicherlich irgendwann mal eine taste, oder berührt die maus...
oder man prüft, ob sich da sound technisch was tut...
also irgend sowas...
elundril - Do 14.01.10 16:33
naja, ich denke das der PC sozusagen nur als Ausgang ins Internet dient und der PC von dem sein Vater skyped per Netzwerk mit dem Ausgang verbunden ist. Also muss man weder Tasten drücken noch mäuse bewegen.
lg elundril
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!