晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/proc/thread-self/root/usr/share/perl5/vendor_perl/Net/SNMP/Transport/IPv4/
Upload File :
Current File : //proc/thread-self/root/usr/share/perl5/vendor_perl/Net/SNMP/Transport/IPv4/UDP.pm
# -*- mode: perl -*-
# ============================================================================

package Net::SNMP::Transport::IPv4::UDP;

# $Id: UDP.pm,v 4.0 2009/09/09 15:05:33 dtown Rel $

# Object that handles the UDP/IPv4 Transport Domain for the SNMP Engine.

# Copyright (c) 2001-2009 David M. Town <dtown@cpan.org>
# All rights reserved.

# This program is free software; you may redistribute it and/or modify it
# under the same terms as the Perl 5 programming language system itself.

# ============================================================================

use strict;

use Net::SNMP::Transport qw( DOMAIN_UDPIPV4 );

use IO::Socket qw( SOCK_DGRAM );

## Version of the Net::SNMP::Transport::IPv4::UDP module

our $VERSION = v4.0.0;

## Handle importing/exporting of symbols

use base qw( Net::SNMP::Transport::IPv4 Net::SNMP::Transport );

sub import
{
   return Net::SNMP::Transport->export_to_level(1, @_);
}

## RFC 3411 - snmpEngineMaxMessageSize::=INTEGER (484..2147483647)

sub MSG_SIZE_DEFAULT_UDP4  { 1472 }  # Ethernet(1500) - IPv4(20) - UDP(8)

# [public methods] -----------------------------------------------------------

sub new
{
   return shift->SUPER::_new(@_);
}

sub send
{
   my $this = shift;

   $this->_error_clear();

   if (length($_[0]) > $this->{_max_msg_size}) {
      return $this->_error(
         'The message size %d exceeds the maxMsgSize %d',
         length($_[0]), $this->{_max_msg_size}
      );
   }

   my $bytes = $this->{_socket}->send($_[0], 0, $this->{_dest_name});

   return defined($bytes) ? $bytes : $this->_perror('Send failure');
}

sub recv
{
   my $this = shift;

   $this->_error_clear();

   my $name = $this->{_socket}->recv($_[0], $this->_shared_max_size(), 0);

   return defined($name) ? $name : $this->_perror('Receive failure');
}

sub domain
{
   return DOMAIN_UDPIPV4; # transportDomainUdpIpv4
}

sub type
{
   return 'UDP/IPv4'; # udpIpv4(1)
}

sub agent_addr
{
   my ($this) = @_;

   $this->_error_clear();

   my $name = $this->{_socket}->sockname() || $this->{_sock_name};

   if ($this->{_socket}->connect($this->{_dest_name})) {
      $name = $this->{_socket}->sockname() || $this->{_sock_name};
      if (!$this->{_socket}->connect((pack('x') x length $name))) {
         $this->_perror('Failed to disconnect');
      }
   }

   return $this->_address($name);
}

# [private methods] ----------------------------------------------------------

sub _protocol_name
{
   return 'udp';
}

sub _protocol_type
{
   return SOCK_DGRAM;
}

sub _msg_size_default
{
   return MSG_SIZE_DEFAULT_UDP4;
}

sub _tdomain
{
   return DOMAIN_UDPIPV4;
}

# ============================================================================
1; # [end Net::SNMP::Transport::IPv4::UDP]