首页 电脑 电脑学堂 查看内容

校内涂鸦经典代码大全

2008-10-30 15:13 700 0

摘要: 校内网精选集--> · 黑色非主流葬爱代码有你的地方不哭..· 牵你的手,说好了,不放手· 校内网韩流时尚淡蓝色风格· 校内代码之我俩的约定永远不变· 中国取得最佳成绩之奥运...
关键词: 校内 代码 主题 背景 播放器 男生 时尚 成品 女生 风格

by 云舒        这 个机器有多古老?4.6-RELEASE FreeBSD,没有gcc,没有make,连系统都乱七八糟的,port都不好使,pkg_add -r安装包都会有问题,真是无语了,还好有安装了一个perl 5.8.8。修理Port花了半天时间,硬是没搞好。想想也不划算,把紧急要用的一些小工具花一会儿功夫自己做一个出来算了,于是有了这个简单的perl 版nc,不过我没支持-e参数,用不着。 #!/usr/bin/perl use strict;use IO::Socket;use IO::Select;use Getopt::Std; my %option;getopts('lp:', %option); # listen on local portif( defined $option{'l'} ){    if( !defined $option{'p'} )    {        &Usage( );        exit( -1 );    }       my $port = $option{'p'};    my $listen = IO::Socket::INET->new(Proto => 'tcp',                LocalPort => $port,                Listen => 1,                Reuse => 1) or die "Listen on port $port error: $!n";     while( my $client_sock = $listen->accept() )    {        &ProcessData( $client_sock );    }} # if has no -l argument, maybe want to connect to other hostif( @ARGV != 2 ){    &Usage( );    exit( -1 );} my $client_sock = IO::Socket::INET->new(Proto => 'tcp', PeerHost => $ARGV[0], PeerPort => $ARGV[1] ) || die "Connect to $ARGV[0]:$ARGV[1] error:$!n";&ProcessData( $client_sock ); sub ProcessData{    my $client_sock = shift;       my $select = IO::Select->new( );       $select->add( *STDIN );    $select->add( $client_sock );       my $buffer;    while( 1 )    {        if( ! $select->exists( $client_sock ) )        {            print "waiting connection....n";            last;        }               my @ready = $select->can_read;               for my $tmp_sock(@ready)        {            if( $tmp_sock eq *STDIN )            {                if( my $recv_len = sysread( *STDIN, $buffer, 1024 )  )                {                    if( ! syswrite($client_sock, $buffer) )                    {                        $select->remove( $client_sock );                        $select->remove( *STDIN );                        close( $client_sock );                                               last;                    }                }                else                {                    $select->remove( $client_sock );                    $select->remove( *STDIN );                    close( $client_sock );                                           last;                }            }                       elsif( $tmp_sock eq $client_sock )            {                if( my $recv_len = sysread( $client_sock, $buffer, 1024*5 ) )                {                    if( ! syswrite( *STDOUT, $buffer) )                    {                        $select->remove( $client_sock );                        $select->remove( *STDIN );                        close( $client_sock );                                               last;                    }                }                else                {                    print "socket disconnected.n";                    $select->remove( $client_sock );                    $select->remove( *STDIN );                    close( $client_sock );                                           last;                }            }        }    }} sub Usage{    print "simple nc.pl, code by [email protected]";    print "this script don't support -e cmd.exe, ^_^n";    print "Usage:n";    print "t  -l -p 99n";    print "t 192.168.0.1 80n";}
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部