1
2
3
4
5
6
7
8
9
10
11
12
my $client = IO::Socket::SSL->new (
PeerAddr => 'host',
PeerPort => '123456789',
Proto => 'tcp',
) || warn "Problem: " . IO::Socket::SSL::errstr();
my $msg = q~
this_msg_size:X
blablabla
blabla
~;
$client->print($msg);
1 2 3 4 5 6 7 8 9
my $msg=q~ this_msg_size: blablabla blabla ~; my $size=length($msg); $size+=length($size); $msg=~s/(this_msg_size:)/$1$size/s;
QuoteNachrichtengröße
Größe der Nachricht (nach Verschlüsselung und Komprimierung) in Byte. Das DE ist mit führenden Nullen auf die vorgegebene feste Länge aufzufüllen. Dies ist erforderlich, damit die Nachrichtenlänge nicht mit der Länge des DE variiert.
Typ: DE Format: dig
Länge: 12
Version: 1
1 2 3 4 5 6 7 8 9
my $msg=q~ this_msg_size: blablabla blabla ~; my $size=length($msg); $size+=length($size+length($size)); $msg=~s/(this_msg_size:)/$1$size/s;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
use strict; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'ptbtime1.ptb.de', PeerPort => 37, Proto => 'tcp' ) or die "Kein Socket bekommen!"; my @stat = stat($socket); print join "\n", @stat; read ($socket, my $buffer, 4); print unpack "N", $buffer; # seconds since 1.1.1900
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
#!/usr/bin/perl ########################################################################### # Server, der an einem bestimmten Port lauscht ########################################################################### use strict; use IO::Socket qw(SOMAXCONN); my $port = 8787; my $server_sock = IO::Socket::INET->new( LocalPort => $port, Listen => SOMAXCONN, Proto => 'TCP', Reuse => 1, ) or die "Kann Socket nicht aufbauen"; print "Warte auf Daten an Port $port\n\n"; while(my $peer = $server_sock->accept){ my $data = <$peer>; print $data; print $peer qq(<policy-file-request/>); $peer->close; } #!/usr/bin/perl ########################################################################### # Einfacher Client, der in ein Socket schreibt ########################################################################### use strict; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'rolfrost', PeerPort => 8787, Proto => 'tcp' ) or die "Kein Socket bekommen!"; print $socket "123456789\n"; $socket->close;