Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5746[/thread]

Befehl alle X ms ausführen: in einem server-programm



<< >> 9 Einträge, 1 Seite
eisbeer
 2003-09-23 19:51
#55111 #55111
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallöchen,

Ich stehe vor einem ziemlich kniffligen Problem:

Ich habe einen serverprogramm. Das nimmt requests
von clients an, stellt per Win32::Serialport bzw.
Device::Serialport eine verbindung zu einem Handy
her und verschickt von da ne SMS. Das war bisher
meine Aufgabenstellung. Klappt auch bestens, jetzt
stehe ich aber vor einem Problem:
Wie kann ich mein Programm alle X millisekunden dazu
bringen, eine Verbindung zum Handy herzustellen
um die neu eingeganenen SMS zu checken?

Wäre da nicht die whileschleife des Servers
Code: (dl )
1
2
3
4
5
while ($client = $server->accept()) {
#if ($pid = fork()) {
&HandleClient($client);
# }
}

die ja alles andere blockiert, wäre das Problem
ja einfach zu lösen.

Die einzige möglichkeit die ich seh, is das mit
Tk zu machen. $Widget->repeat(100,&Subroutine);

Aber dann brauch ich wieder n widget, das natürlich
sichbar ist. ich kanns zwar verstecken und 1x1 pixel
machen, will ich aber nicht, weils erstens net der sinn
davon ist und zweitens n Pfusch....

Ideen?
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
eisbeer
 2003-09-24 08:36
#55112 #55112
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Berauschender andrang :)
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
weismat
 2003-09-24 09:42
#55113 #55113
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Um einen kurze Wartezeit einzuführen, kannst Du select verunstalten, um einen kurzen Timeout zu erhalten.
select(undef, undef, undef, 0.25);
Dieses Beispiel entspricht einem Timeout von 250 Milisekunden.
Mit Select kannst Du auch verhindern, daß der Server an der Stelle stehen bleibt, aber da bräuchte ich mehr Infos von Dir.\n\n

<!--EDIT|weismat|1064382350-->
eisbeer
 2003-09-24 15:42
#55114 #55114
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
ja das mit select kenn ich ja, aber ich trotzdem
nicht 2 dinge auf einmal tun. einmal auf connectende
clients warten und zweitens noch alle X sekunden
ne Sub starten...

Ich muss es wohl mit Tk machen, oder bitte bitte
kennt noch jemand ne lösung :) ?
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
Robby
 2003-09-24 15:55
#55115 #55115
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
wie wäre es damit:
Edit: "*aaaaah* Beitrag nicht bis zum Ende gelesen....willst es ja ohne Tk machen...."

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use Tk;

my  $MamaGUI = new MainWindow;

$MamaGUI->repeat(250, \&test );

MainLoop();

sub test
{
print "test\n";
}
\n\n

<!--EDIT|Robby|1064404591-->
Kaum macht man es richtig - schon funktioniert es!
Strat
 2003-09-24 16:04
#55116 #55116
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
eine moeglichkeit waere, dafuer einen eigenen thread (oder prozess) abzustellen. im hauptprogramm selbst ist sowas sehr schwierig zu machen, weil es ja sein kann, dass da eine aktion laenger braucht als die paar milisekunden, in denen abgefragt werden soll.

bei threads: da einen erstellen (benoetigt perl5.8) und den immer laufen lassen; wenn du da fuer jede anfrage einen eigenen thread erzeugst, kannst du ziemliche speicherprobleme bekommen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
eisbeer
 2003-09-24 16:16
#55117 #55117
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Oh ich seh schon, das wird schwer ...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
Strat
 2003-09-24 16:31
#55118 #55118
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
da faellt mir auch noch CPAN:POE ein, damit koennte es auch gehen. gute hilfe dazu findest du auf http://poe.perl.org/
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
eisbeer
 2003-09-25 16:08
#55119 #55119
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Oh das is ja mal was, aber ich versteht 0 von der Doku.
Hat da jemand erfahrung / ahnung mit POE ?

Ich kämpf mich weiter durch, danke strat !
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
<< >> 9 Einträge, 1 Seite



View all threads created 2003-09-23 19:51.