Thread Netzwerkprogrammierung: HILFE ! ! !: Beispiele aus dem Buch gehen nicht... (6 answers)
Opened by renee at 2005-07-14 00:39

renee
 2005-07-14 00:39
#37631 #37631
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier funktioniert bei mir:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/perl
use strict;
use warnings;
#Pragmas einbinden

#IO::Socket Modul einbinden, mit DEFAULT und CRLF
use IO::Socket qw(:DEFAULT :crlf);

#Konstante definieren
use constant MY_PORT => '2050';

#CRLF als Zeilenende verwenden
#$/ = CRLF;

#$quit deklarieren
my $quit = 0;

#STRG+C abfangen
$SIG{'INT'} = sub { $quit++; };

#$port Wert zuweisen
my $port = shift || MY_PORT;

#IO::Socket Objekt erzeugen
my $socket = IO::Socket::INET->new(

Listen => 20,

LocalPort => $port,

Timeout => 60*60,

Reuse => 1) || die

"Konnte Socket Objekt nicht erzeugen: $!";

warn "Warte auf ankommende Verbindung auf Port $port...\n";

#Schleife, wenn $quit nicht wahr ist
while(!$quit) {

#Verbindungen akzeptieren
next unless my $session = $socket->accept;

#Peer host identifizieren
my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost;

#Verbindungsport überprüfen
my $Port = $session->peerport;

#Meldung ausgeben
warn "Verbindung von $peer, $Port\n";

#Schleife, was bei einer Verbindung passiert
while(<$session>) {
my $msg_out = $_;
print $session $msg_out;
}

#Verbindungsende ausgeben
warn "Verbindung von $peer, $Port beendet...\n";

#Session schließen
close($session);
}

#Socket schließen
close $socket;


Client:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl
use strict;
use warnings;
#Pragmas einbinden

#IO::Socket einbinden
use IO::Socket qw(:DEFAULT :crlf);

#Konstante definieren
use constant MY_HOST => '127.0.0.1';
use constant MY_PORT => '2050';

#Variablen deklarieren
my $host = shift || MY_HOST;
my $port = shift || MY_PORT;

#IO::Socket Modul erzeugen
my $socket = IO::Socket::INET->new("$host:$port") ||
die "Fehler beim Socket öffnen: $!";

#Schleife, für die Kommunikation
while(defined(my $msg_out = <STDIN>)) {

#Nachricht verschicken
print $socket $msg_out;

#Nachrichten empfangen
my $msg_in = <$socket>;

#Nachricht ausgeben
print $msg_in;
}

#Socket schließen
$socket->close || warn "Fehler beim schließen des Sockets: $@";

warn "Verbindung beendet..\n";
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/

View full thread Netzwerkprogrammierung: HILFE ! ! !: Beispiele aus dem Buch gehen nicht...