SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

TELEKOM

Single-Thread-Server und -Client in Perl

Ein einfacher Server wurde schon im letzten Kapitel kurz vorgestellt. Diesmalsoll er genauer betrachtet werden. Der Server "bewacht" den Port 2000, kann alsoauch von jedem Benutzer gestartet werden. Zuerst wird ein neuer Socket für diesenPort eingerichtet. Der Parameter "Reuse" (sprich "Re-Use") erlaubt diesofortige Wiederverwendung des Ports, wenn der Client "aufgelegt" hat. Mit "Listen" wird der Standardwert von fünf Anfragen in der Warteschlangefestgelegt. Danach wartet das Programm auf eine Kontaktaufnahme des Clients($client = $sock->accept()). Sobald eine Verbindung steht, meldet derServer mit welchem Rechner die Verbindung aufgenommen wurde. Damit es etwaskurzweiliger als beim einfachen Echo-Server wird, handelt es sich diesmal um einenOhce-Server, der jede Eingabezeile gespiegelt zurückschickt. Womit auchgleich festgelegt wäre, daß der Server textzeilenorientiert arbeitet.Sobald der Client keine Daten mehr liefert (Eingabe Ctrl-D), wird die Verbindung beendet.

#!/usr/bin/perl# tcp-server-st.pl -- Ein Single-threaded-TCP-Serveruse strict;use IO::Socket;use constant MYPORT => 2000;my $sock = '';my $client = 0;$sock = new IO::Socket::INET(LocalPort => MYPORT, Reuse => 1, Listen => 5) or die "can't create local socket: $@\n"; print "Accepting connections on Port ", MYPORT, "...\n"; while ($client = $sock->accept()) { # Eine Verbindung ist eingetroffen. print "Accepted connection from ", $client->peerhost(), ":", $client->peerport(), "\n"; # Echo, das alles umdreht: while (<$client>) { chomp; print $client scalar(reverse($_)), "\n"; } $client->close() if defined $client; } Solange der Server mit einem Client in Verbindung ist, kann er keine weiteren Anfragen entgegennehmen. Sobald dann fünf Client-Anfragen in der Warteschlange stehen werden weitere Anfragen abgewiesen.

Der Client dazu kann auch zum Testen weiterer Demonstrations-Server verwendet werden. Hier ist die Parameterversorgung beim Erzeugen eines neuen Socket etwas anders. Die Adresse des zu kontaktierenden Servers und die Portnummer werden über die Kommandozeile eingegeben. Statt "Reuse" und "Listen" werden beim Client das Protokoll (TCP) und ein Timeoutwert übergeben. Der Client bricht somit nach 5 Sekunden ab, wenn keine Verbindung zustandekommt.
Der Client schickt alle Eingabezeilen zum Server. Falls zwischendurch Zeilen vom Server angekommen sind, werden Sie entgegengenommen und auf der Standardausgabe ausgegeben.

#!/usr/bin/perl # tcp-client.pl -- Ein einfacher TCP-Client. # Verwendung: $0 remote_host remote_port use strict; use IO::Socket; use constant TIMEOUT => 5; my $sock = ''; my $reply = ''; $sock = new IO::Socket::INET(PeerAddr => $ARGV[0], PeerPort => $ARGV[1], Proto => 'tcp', Timeout => TIMEOUT) or die "can't connect to $ARGV[0]:$ARGV[1]: $@\n"; while (<STDIN>) { print $sock $_; last unless defined($reply = <$sock>); print ">> $reply"; } $sock->close() if defined $sock; Der Nachteil des Single-Thread-Servers besteht hauptsächlich darin, daß keine neuen Clientanfragen entgegengenommen werden, solange der Server noch mit einem anderen Partner kommuniziert. Das Problem löst die folgende Erweiterung.

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere