wobei es auch noch an anderen dingen zu scheitern schient:
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
#!/usr/bin/env perl
use strict;
use warnings;
use Socket qw(:all);
use IO::Socket;
use IO::Socket::INET;
my $sock;
my $tcpnodelay;
print "\nUsing built-in method\n";
my $proto = getprotobyname ('tcp');
socket ($sock, PF_INET, SOCK_STREAM, $proto) or die "Socket: $! ($^E)";
$tcpnodelay = getsockopt ($sock, IPPROTO_TCP, TCP_NODELAY);
$tcpnodelay = unpack 'I', $tcpnodelay;
print "Before: tcpnodelay=$tcpnodelay\n";
setsockopt $sock, IPPROTO_TCP, TCP_NODELAY, 1 or die "setsockopt: $! ($^E)";
$tcpnodelay = getsockopt ($sock, IPPROTO_TCP, TCP_NODELAY);
$tcpnodelay = unpack 'I', $tcpnodelay;
print "After: tcpnodelay=$tcpnodelay\n";
print "\nUsing OO method\n";
$sock = IO::Socket::INET->new(Type => SOCK_STREAM, Proto =>'tcp') or
die "new IO::Socket::INET: $! ($^E)";
$tcpnodelay = $sock->sockopt(TCP_NODELAY);
print "Before: tcpnodelay=$tcpnodelay\n";
$sock->sockopt(TCP_NODELAY, 1) or die "\$sock->sockopt NODELAY, 1: $! ($^E)";
$tcpnodelay = $sock->sockopt(TCP_NODELAY);
print "After: tcpnodelay=$tcpnodelay\n";
print "\n\n";
__END__
gibt mir mit einem unprivilegiertem user folgende ausgabe:
Using built-in method
Before: tcpnodelay=0
After: tcpnodelay=1
Using OO method
Before: tcpnodelay=0
$sock->sockopt NODELAY, 1: Keine Berechtigung (Keine Berechtigung) at ./Server3.pl line 30.
mit sudo aufruf aber:
[sudo] password for enzo:
Using built-in method
Before: tcpnodelay=0
After: tcpnodelay=1
Using OO method
Before: tcpnodelay=0
After: tcpnodelay=-1
scheint also schon an den berechtigungen zu scheitern.
@Dubu: trotzdem danke!
ich werde jetzt nochmal die neueren perl versionen ausprobieren, wenn sich dort das gleiche bild zeigt dann breche ich das unternehmen ab und werde damit leben ( können/müssen ).
auch danke an die anderen helfer!