_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/getsockopt - pasiima socket'o nustatymus duotam socket'ui
  • getsockopt SOCKET,LEVEL,OPTNAME

    Užklausia nustatymą, pavadintą OPTNAME, susietą su SOCKET duotąjam LEVEL. Nustatymai gali egzistuoti keliems protokolo lygiams, priklausomai nuo socket'o tipo, bet bent jau aukščiausias socket'o lygis SOL_SOCKET (nustatytas Socket modulyje) egzistuos. Užklausti nustatymus kitame lygyje atitinkamo protokolo numeris, kontroliuojantis nustatymus turėtų būti pateiktas. Pvz., kad parodyti kad nustatymas interpretuotinas TCP protokolo, LEVEL turėtų būti nustatytas TCP protokolo numeriui, kurį galima gauti naudojant getprotobyname.

    Kvietimas gražina supakuotą eilutę, parodančią reikalaujamo socket'o nustatymas arba undef, klaidos atveju (klaidos priežastis bus $!). Kas tiksliai yra supakuotoje eilutėje, priklauso nuo LEVEL ir OPTNAME, o dėl detalių reikėtų peržvelgti sistemos dokumentaciją. Dažnas atvejis, visgi, kad nustatymas yra sveikas skaičius. Tuo atveju rezultatas bus supakuotas sveikasis skaičius, kurį galima iškoduoti naudojant unpack su i (arba I ) formatu.

    Pavyzdys testuojant Nagle'o algoritmą pritaikomas socket'ui:

        use Socket;
        defined(my $tcp = getprotobyname("tcp"))
    	or die "Could not determine the protocol number for tcp";
        # my $tcp = Socket::IPPROTO_TCP; # Alternative
        my $packed = getsockopt($socket, $tcp, Socket::TCP_NODELAY)
    	or die "Could not query TCP_NODELAY SOCKEt option: $!";
        my $nodelay = unpack("I", $packed);
        print "Nagle's algorithm is turned ", $nodelay ? "off\n"  o>: "on\n";
algirdas@perl.lt 2005.04.11 - $dabar