亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? socket.pm

?? perl 解釋器
?? PM
?? 第 1 頁 / 共 2 頁
字號:

=head1 SUB-CLASSES

=cut

##
## AF_INET
##

package IO::Socket::INET;

use strict;
use vars qw(@ISA);
use Socket;
use Carp;
use Exporter;

@ISA = qw(IO::Socket);

IO::Socket::INET->register_domain( AF_INET );

my %socket_type = ( tcp => SOCK_STREAM,
		    udp => SOCK_DGRAM,
		    icmp => SOCK_RAW,
		  );

=head2 IO::Socket::INET

C<IO::Socket::INET> provides a constructor to create an AF_INET domain socket
and some related methods. The constructor can take the following options

    PeerAddr	Remote host address          <hostname>[:<port>]
    PeerPort	Remote port or service       <service>[(<no>)] | <no>
    LocalAddr	Local host bind	address      hostname[:port]
    LocalPort	Local host bind	port         <service>[(<no>)] | <no>
    Proto	Protocol name (or number)    "tcp" | "udp" | ...
    Type	Socket type                  SOCK_STREAM | SOCK_DGRAM | ...
    Listen	Queue size for listen
    Reuse	Set SO_REUSEADDR before binding
    Timeout	Timeout	value for various operations


If C<Listen> is defined then a listen socket is created, else if the
socket type, which is derived from the protocol, is SOCK_STREAM then
connect() is called.

The C<PeerAddr> can be a hostname or the IP-address on the
"xx.xx.xx.xx" form.  The C<PeerPort> can be a number or a symbolic
service name.  The service name might be followed by a number in
parenthesis which is used if the service is not known by the system.
The C<PeerPort> specification can also be embedded in the C<PeerAddr>
by preceding it with a ":".

If C<Proto> is not given and you specify a symbolic C<PeerPort> port,
then the constructor will try to derive C<Proto> from the service
name.  As a last resort C<Proto> "tcp" is assumed.  The C<Type>
parameter will be deduced from C<Proto> if not specified.

If the constructor is only passed a single argument, it is assumed to
be a C<PeerAddr> specification.

Examples:

   $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
                                 PeerPort => 'http(80)',
                                 Proto    => 'tcp');

   $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');

   $sock = IO::Socket::INET->new(Listen    => 5,
                                 LocalAddr => 'localhost',
                                 LocalPort => 9000,
                                 Proto     => 'tcp');

   $sock = IO::Socket::INET->new('127.0.0.1:25');


=head2 METHODS

=over 4

=item sockaddr ()

Return the address part of the sockaddr structure for the socket

=item sockport ()

Return the port number that the socket is using on the local host

=item sockhost ()

Return the address part of the sockaddr structure for the socket in a
text form xx.xx.xx.xx

=item peeraddr ()

Return the address part of the sockaddr structure for the socket on
the peer host

=item peerport ()

Return the port number for the socket on the peer host.

=item peerhost ()

Return the address part of the sockaddr structure for the socket on the
peer host in a text form xx.xx.xx.xx

=back

=cut

sub new
{
  my $class = shift;
  unshift(@_, "PeerAddr") if @_ == 1;
  return $class->SUPER::new(@_);
}

sub _sock_info {
  my($addr,$port,$proto) = @_;
  my @proto = ();
  my @serv = ();

  $port = $1
	if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,);

  if(defined $proto) {
    @proto = $proto =~ m,\D, ? getprotobyname($proto)
			     : getprotobynumber($proto);

    $proto = $proto[2] || undef;
  }

  if(defined $port) {
    $port =~ s,\((\d+)\)$,,;

    my $defport = $1 || undef;
    my $pnum = ($port =~ m,^(\d+)$,)[0];

    @serv= getservbyname($port, $proto[0] || "")
	if($port =~ m,\D,);

    $port = $pnum || $serv[2] || $defport || undef;

    $proto = (getprotobyname($serv[3]))[2] || undef
	if @serv && !$proto;
  }

 return ($addr || undef,
	 $port || undef,
	 $proto || undef
	);
}

sub _error {
    my $fh = shift;
    $@ = join("",ref($fh),": ",@_);
    carp $@ if $^W;
    close($fh)
	if(defined fileno($fh));
    return undef;
}

sub configure {
    my($fh,$arg) = @_;
    my($lport,$rport,$laddr,$raddr,$proto,$type);


    ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr},
					$arg->{LocalPort},
					$arg->{Proto});

    $laddr = defined $laddr ? inet_aton($laddr)
			    : INADDR_ANY;

    return _error($fh,"Bad hostname '",$arg->{LocalAddr},"'")
	unless(defined $laddr);

    unless(exists $arg->{Listen}) {
	($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr},
					    $arg->{PeerPort},
					    $proto);
    }

    if(defined $raddr) {
	$raddr = inet_aton($raddr);
	return _error($fh,"Bad hostname '",$arg->{PeerAddr},"'")
		unless(defined $raddr);
    }

    $proto ||= (getprotobyname "tcp")[2];
    return _error($fh,'Cannot determine protocol')
	unless($proto);

    my $pname = (getprotobynumber($proto))[0];
    $type = $arg->{Type} || $socket_type{$pname};

    $fh->socket(AF_INET, $type, $proto) or
	return _error($fh,"$!");

    if ($arg->{Reuse}) {
	$fh->sockopt(SO_REUSEADDR,1) or
		return _error($fh);
    }

    $fh->bind($lport || 0, $laddr) or
	return _error($fh,"$!");

    if(exists $arg->{Listen}) {
	$fh->listen($arg->{Listen} || 5) or
	    return _error($fh,"$!");
    }
    else {
	return _error($fh,'Cannot determine remote port')
		unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW);

	if($type == SOCK_STREAM || defined $raddr) {
	    return _error($fh,'Bad peer address')
	    	unless(defined $raddr);

	    $fh->connect($rport,$raddr) or
		return _error($fh,"$!");
	}
    }

    $fh;
}

sub sockaddr {
    @_ == 1 or croak 'usage: $fh->sockaddr()';
    my($fh) = @_;
    (sockaddr_in($fh->sockname))[1];
}

sub sockport {
    @_ == 1 or croak 'usage: $fh->sockport()';
    my($fh) = @_;
    (sockaddr_in($fh->sockname))[0];
}

sub sockhost {
    @_ == 1 or croak 'usage: $fh->sockhost()';
    my($fh) = @_;
    inet_ntoa($fh->sockaddr);
}

sub peeraddr {
    @_ == 1 or croak 'usage: $fh->peeraddr()';
    my($fh) = @_;
    (sockaddr_in($fh->peername))[1];
}

sub peerport {
    @_ == 1 or croak 'usage: $fh->peerport()';
    my($fh) = @_;
    (sockaddr_in($fh->peername))[0];
}

sub peerhost {
    @_ == 1 or croak 'usage: $fh->peerhost()';
    my($fh) = @_;
    inet_ntoa($fh->peeraddr);
}

##
## AF_UNIX
##

package IO::Socket::UNIX;

use strict;
use vars qw(@ISA $VERSION);
use Socket;
use Carp;
use Exporter;

@ISA = qw(IO::Socket);

IO::Socket::UNIX->register_domain( AF_UNIX );

=head2 IO::Socket::UNIX

C<IO::Socket::UNIX> provides a constructor to create an AF_UNIX domain socket
and some related methods. The constructor can take the following options

    Type    	Type of socket (eg SOCK_STREAM or SOCK_DGRAM)
    Local   	Path to local fifo
    Peer    	Path to peer fifo
    Listen  	Create a listen socket

=head2 METHODS

=over 4

=item hostpath()

Returns the pathname to the fifo at the local end

=item peerpath()

Returns the pathanme to the fifo at the peer end

=back

=cut

sub configure {
    my($fh,$arg) = @_;
    my($bport,$cport);

    my $type = $arg->{Type} || SOCK_STREAM;

    $fh->socket(AF_UNIX, $type, 0) or
	return undef;

    if(exists $arg->{Local}) {
	my $addr = sockaddr_un($arg->{Local});
	$fh->bind($addr) or
	    return undef;
    }
    if(exists $arg->{Listen}) {
	$fh->listen($arg->{Listen} || 5) or
	    return undef;
    }
    elsif(exists $arg->{Peer}) {
	my $addr = sockaddr_un($arg->{Peer});
	$fh->connect($addr) or
	    return undef;
    }

    $fh;
}

sub hostpath {
    @_ == 1 or croak 'usage: $fh->hostpath()';
    my $n = $_[0]->sockname || return undef;
    (sockaddr_un($n))[0];
}

sub peerpath {
    @_ == 1 or croak 'usage: $fh->peerpath()';
    my $n = $_[0]->peername || return undef;
    (sockaddr_un($n))[0];
}

=head1 SEE ALSO

L<Socket>, L<IO::Handle>

=head1 AUTHOR

Graham Barr E<lt>F<Graham.Barr@tiuk.ti.com>E<gt>

=head1 COPYRIGHT

Copyright (c) 1996 Graham Barr. All rights reserved. This program is free
software; you can redistribute it and/or modify it under the same terms
as Perl itself.

=cut

1; # Keep require happy

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区蜜臀亚洲| 一区二区三区日韩欧美精品| 麻豆国产精品视频| 91麻豆精品久久久久蜜臀| 成人午夜看片网址| 日韩一区二区免费在线电影| 日本不卡一区二区| 欧美变态口味重另类| 国产精品一二三在| 亚洲欧美在线观看| 欧美日韩一区 二区 三区 久久精品| 亚洲国产精品人人做人人爽| 日韩欧美国产一区二区在线播放 | 国产精品国产三级国产a | 亚洲乱码国产乱码精品精小说| 色综合久久久久久久久| 秋霞电影网一区二区| 久久久无码精品亚洲日韩按摩| 不卡的电视剧免费网站有什么| 一级日本不卡的影视| 欧美videossexotv100| 波多野结衣精品在线| 婷婷开心激情综合| ww久久中文字幕| 欧美在线你懂的| 国产一区久久久| 一区二区三区**美女毛片| 精品免费一区二区三区| 国产欧美va欧美不卡在线| 93久久精品日日躁夜夜躁欧美| 中文字幕一区二区在线观看| 欧美精品视频www在线观看| 国产一区二区三区电影在线观看 | 91精品在线免费| 国产99久久精品| 亚洲成人免费看| 国产欧美日韩另类一区| 欧美高清性hdvideosex| 成人app下载| 亚洲一级电影视频| 国产亚洲欧美中文| 欧美另类一区二区三区| 不卡一区二区三区四区| 七七婷婷婷婷精品国产| 亚洲情趣在线观看| 国产婷婷精品av在线| 欧美高清精品3d| 99久久免费精品| 国产aⅴ综合色| 老司机免费视频一区二区 | 午夜激情一区二区| 亚洲视频你懂的| 国产精品三级av| 久久色中文字幕| 日韩一区二区不卡| 欧美另类变人与禽xxxxx| 日本韩国精品在线| 91丨porny丨户外露出| 粉嫩一区二区三区性色av| 精品一区中文字幕| 免费观看在线色综合| 视频一区二区三区在线| 一区二区三区在线观看动漫| 综合色中文字幕| 亚洲视频一区二区在线| 中文字幕永久在线不卡| 国产精品电影一区二区| 国产日韩综合av| 久久久久久久久岛国免费| 欧美tickling挠脚心丨vk| 日韩欧美国产午夜精品| 日韩欧美高清在线| 日韩区在线观看| 日韩欧美高清dvd碟片| 欧美电影免费观看高清完整版在| 6080国产精品一区二区| 91精品国产高清一区二区三区 | 成人精品国产免费网站| 久久精品久久99精品久久| 香蕉影视欧美成人| 午夜欧美大尺度福利影院在线看| 亚洲一区国产视频| 午夜不卡av免费| 久久精品免费观看| 国产伦精品一区二区三区视频青涩 | 亚洲精品一区二区三区99| 欧美一区二区国产| 精品对白一区国产伦| 久久综合久久综合久久综合| 久久久久久久久久久黄色| 国产日韩v精品一区二区| 国产精品二三区| 亚洲一区二区三区三| 婷婷成人综合网| 久草这里只有精品视频| 成人高清免费在线播放| 日本高清不卡视频| 欧美一区二区黄| 欧美国产视频在线| 亚洲精品写真福利| 日韩精品亚洲一区二区三区免费| 韩日欧美一区二区三区| 国产·精品毛片| 欧美三级乱人伦电影| 欧美成人性战久久| 18成人在线观看| 石原莉奈在线亚洲三区| 国产乱码字幕精品高清av | 9久草视频在线视频精品| 欧美色国产精品| 久久精品人人做人人综合 | 丝袜美腿亚洲综合| 国产精品资源在线观看| 欧美影院午夜播放| 2019国产精品| 亚洲影院久久精品| 精品亚洲国产成人av制服丝袜| 91网站最新地址| 亚洲精品一区二区三区影院| 亚洲黄色片在线观看| 国产一区二区免费在线| 欧美三级视频在线观看| 日韩一区二区三区视频在线观看 | 精品久久久久久亚洲综合网 | 国产亚洲成aⅴ人片在线观看| 一区二区激情小说| 国产精品91一区二区| 欧美亚洲国产一区二区三区 | 精品久久久久久久久久久久久久久| 中日韩av电影| 男人的天堂亚洲一区| 日本韩国欧美三级| 国产午夜亚洲精品羞羞网站| 午夜成人免费视频| 色综合天天狠狠| 欧美激情一区在线观看| 久久成人精品无人区| 91福利小视频| 中文字幕在线一区| 国产乱码精品一区二区三区忘忧草| 欧美日韩视频在线观看一区二区三区| 国产视频一区在线观看| 毛片av一区二区| 欧美精品日韩一本| 中文字幕欧美一| 国产原创一区二区| 欧美xxxx在线观看| 日韩高清欧美激情| 欧美日韩国产三级| 一区二区三区毛片| 色久优优欧美色久优优| 国产精品久久网站| 国产成人免费视| 久久久久国产精品人| 激情久久久久久久久久久久久久久久| 欧美久久婷婷综合色| 亚洲成av人片www| 欧美三级电影网站| 午夜激情一区二区| 欧美日韩国产三级| 亚洲第一成年网| 欧美日韩高清一区二区三区| 一区二区三区中文字幕电影| 色婷婷精品久久二区二区蜜臀av| 亚洲欧洲日韩在线| 91在线视频播放| 亚洲人成伊人成综合网小说| 色综合色狠狠天天综合色| 亚洲视频香蕉人妖| 欧美综合在线视频| 午夜一区二区三区视频| 91麻豆精品91久久久久久清纯| 丝袜脚交一区二区| 欧美成人一区二区三区| 国产一区二区三区黄视频 | 99re8在线精品视频免费播放| 亚洲国产精品传媒在线观看| 成人免费视频caoporn| 国产精品乱人伦| 色素色在线综合| 日韩av一二三| 欧美精品一区二区三区在线| 国产成人精品免费在线| 国产精品福利一区| 欧美日韩一区 二区 三区 久久精品| 天天综合天天做天天综合| 日韩欧美不卡一区| 成人免费视频app| 亚洲一卡二卡三卡四卡无卡久久| 7878成人国产在线观看| 久久只精品国产| 天天操天天色综合| 日韩欧美一二区| 成人综合婷婷国产精品久久| 一片黄亚洲嫩模| 日韩欧美一卡二卡| 99精品欧美一区二区三区综合在线| 一区二区三区在线播放| 欧美成人官网二区| 99re亚洲国产精品|