Schrift
[thread]5973[/thread]

Script beenden ?

Leser: 4


<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten
BrownWolf
 2003-12-18 04:42
#76376 #76376
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe einen Socket Server!
Wie kann ich das Script beenden so das kein weiterer Code ausgeführt wird ? Ich habe nämlich folgendes Problem:

Code (perl): (dl )
1
2
3
4
5
6
if($action eq "bla") {
  if($nick eq "") {
  print $client "Fehler: Kein Nick angegeben.";
  [b]exit();[/b]
  }
}


Wenn ich dort nun ein exit() angebe dann beendet er den ganzen Socket Server. Gebe ich aber $client->close(); ein dann schliesst er nur die Verbindung aber führt den Code trotzdem weiter aus (?)

Kann mir jemand helfen?
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
esskar
 2003-12-18 05:36
#76377 #76377
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
welchen code möchtest du denn nicht ausführen?
BrownWolf
 2003-12-18 05:42
#76378 #76378
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Na der Code der danach kommen würde. Hab die Lösung aber glaube schon gefunden.

Code (perl): (dl )
1
2
3
4
5
6
7
8
if($action eq "bla") {
  if($nick eq "") {
  print $client "Fehler: Kein Nick angegeben.";
  $select->remove($client);
  $client->close();
  last;
  }
}
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
esskar
 2003-12-18 11:18
#76379 #76379
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn du dich in einer schleife befindest dann so... ja...
konnte es leider nicht erraten, in welcher umgebung dieses ausschnitt sich befand...
beim nächsten mal rühig ein wenig mehr posten, damit es dem leser klar wird
BrownWolf
 2003-12-19 01:32
#76380 #76380
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Ok jetzt möchte ich das eine Meldung nur zu einem bestimmten Socket gesendet wird.
Ich dachte es mir so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
our %private;
if($client eq $server) {
     $client = $server->accept();
     $select->add($client);
     $private{"musteruser1"} = $client;

 .....

}


Später wenn man diesen Client etwas senden möchte:

Code (perl): (dl )
1
2
my $sock = $private{"musteruser1"};
print $sock "Meldung....";


Funktioniert auch schon soweit, nur das wenn mehr als 1 Benutzer verbunden sind, dann kommt diese Nachricht mehrmals an! Weiss jemand warum :P ?\n\n

<!--EDIT|BrownWolf|1071790455-->
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
Strat
 2003-12-19 01:43
#76381 #76381
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
lies dir mal How to Write a Chat Server durch, da sind wohl 90% der probleme behandelt, auf die du da so stoesst. Der komplette Quellcode des Chatservers\n\n

<!--EDIT|Strat|1071791129-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
BrownWolf
 2003-12-19 01:57
#76382 #76382
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Hi,

danke für den Link aber ich glaube das wird mir nicht helfen.
Das Problem ist, das ich zwar Meldungen austauschen kann aber keine Privatnachrichten weil man gleich an alle sendet die verbunden sind! Auch gibt es ein Problem damit, wenn man HTML ersetzen will aber Smileys etc. sollen noch funktionieren bzw man möchte (b) durch <b> ersetzen. Bei einem selbst wirds dann ersetzt aber gegenüber nicht!
Und wie siehts eigentlich mit den Meldungen aus wenn man die versendet ? Können die eigentlich ausversehen mal auf der Registrier Page oder Startpage erscheinen ? Denn ich habe mehrere Methoden eingebaut ..... und es heisst ja:

Code (perl): (dl )
1
2
3
foreach my $user($select->can_write()) {
 ...
}


Hoffe ich hab mich verständlich genug ausgedrückt ;)
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-12-21 20:51
#76383 #76383
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Das mit den HTML hat sich jetzt erledigt, das mit den Methoden auch, denke nicht das es so ein großes Problem werden wird. Jetzt muss ich nur noch das mit den Privatnachrichten hinkriegen :-)
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
eisbeer
 2003-12-25 14:04
#76384 #76384
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie hast du es denn überhaupt verwirklicht, das sich mehrere Clients anmelden können, mit
fork oder mit threads? Denn an einen klassischen Socket, der nicht geforket o.ä. wird kann
immer nur 1 Client connecten. Trennt der sich, kommt der nächste an die Reihe.
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
BrownWolf
 2003-12-27 05:02
#76385 #76385
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
http://www.perldoc.com/perl5.8.0/lib/IO/Select.htm...
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten



View all threads created 2003-12-18 04:42.