Schrift
[thread]4314[/thread]

socket: Übergabe von Daten (Seite 2)

Leser: 3


<< |< 1 2 3 4 >| >> 33 Einträge, 4 Seiten
renee
 2005-04-05 17:30
#37829 #37829
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wiki:Artikel zu fork()
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2005-04-05 19:08
#37830 #37830
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Dann hab ich das falsch verstanden.
Mist.

Den ich schreibe gerade ein Backup Programm.
Ich würde dieses halt gerne als Dienst laufen lassen, aber ich denke das wird zu performence fressend wenn ich das komplette Programm als Dienst laufen lasse...

Hätte vieleicht einer ne Idee wie ich das noch Lösen könnte?

Irgendwie dem Server mitteilen das der Client gleich connecten möchte und dafür das Socket/Backupscript laufen lassen....

Ich hab schon dran gedacht eine File per FTP hochzuladen und wenn die File da ist Script starten...
halte es aber nicht für die beste Lösung\n\n

<!--EDIT|zipster|1112713769-->
esskar
 2005-04-05 01:31
#37831 #37831
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
sobald das accespt zurück gekehrt, hat sich der client mit dem server verbunden; was aber noch nicht heißt, dass er dem server auch was schicken will...
das bekommst du mit dem select raus...
schau dir mal das perldoc -f select an (ab select RBITS,WBITS,EBITS,TIMEOUT)
und dann vielleicht noch IO::Select
esskar
 2005-04-05 03:02
#37832 #37832
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
liest du dir die man pages überhaupt richtig durch?
vom listensocket kannst du nicht lesen;
du hattest doch das accept;
dieses liefert einen client-socket zurück. wenn dieser != undef ist, kannst du mit hilfe von select feststellen, ob daten auf dem socket anliegen oder nicht!
esskar
 2005-04-05 03:59
#37833 #37833
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
weil du dann immer nur einen client bedienen kannst (und zwar immer nur den letzten, der sich mit dir verbindet). Alle anderen gehen verloren; wenn du das willst, ist das okay. Aber sobald dir der klient einmal was geschickt hat, kann er dir auf dieser verbindung nicht noch einmal was schicken...
Froschpopo
 2005-04-05 04:08
#37834 #37834
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das soll ein chatserver werden. Der muss mehreren leuten gleichzeitig antworten können !

Warum muss ich trotzdem mit select arbeiten bei meinem kleinen beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
my $socket;
while ($socket = $tcpsock->accept) {
my $line = <$socket>;
print $line;
print $socket "Hier spricht der Client";

}
close ($socket);

wenn ich einfach für jeden neuen socket ein forking mache\n\n

<!--EDIT|Froschpopo|1112659787-->
Froschpopo
 2005-04-05 04:53
#37835 #37835
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
dein vorschlag kann zwar gleichzeitig mehrere sockets verwalten, aber der server kanns nicht gleichzeitig verarbeiten. Gut, ich könnte ja nach dem öffnen eines neuen sockets dann die Daten an den neuen fork übergeben...
Aber um ein paar hundert forks komm ich nicht drumherum.
Ich bastel übrigens grad nen Tk Client der sich dann mit o.g. Socket in Verbindung setzen soll. Sogar am Client muss ich forken, denn sonst bleibt das Programm stehen weil ich ja irgendwie in ner schleife auf antworten vom server warten muss.
sri
 2005-04-05 09:27
#37836 #37836
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Warum macht ihr es euch so schwer? POE ist doch dazu da um genau diese Probleme zu loesen!
esskar
 2005-04-05 16:34
#37837 #37837
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmmm...
ich glaube nicht, dass man einen Socket über prozess grenzen hinaus vererben kann... du könntest aber versuchen zu forken, Socket_new.pl mit require oder do einzubinden und dann die sachen mit dem socket zu tun...

an den socket, den server nach dem accept erhält, kannst du natürlich auch was senden....

Code: (dl )
$socket->print("Hallo, ich bin der Server!\n");

sollte gehen!
zipster
 2005-04-05 18:48
#37838 #37838
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ok, erstmal vielen Dank für den Wiki Link.
Dort wird aber nur beschrieben wie man es intern in einem Script macht...
Ist sowas wie ich es vorhabe auch möglich?
Das es z.B. socket_new.pl öffnet und die Daten über Pipes übergibt?
<< |< 1 2 3 4 >| >> 33 Einträge, 4 Seiten



View all threads created 2005-04-05 03:31.