#!/usr/bin/perl 

use strict;
use IO::Socket;
use IO::Select;
use Getopt::Std; my %option;getopts('lp:', %option);
# listen on local port if( defined $option{'l'} )
{
if( !defined $option{'p'} )
{
&Usage( );
exit( - );
}
my $port = $option{'p'};
my $listen = IO::Socket::INET->new(Proto => 'tcp',
LocalPort => $port,
Listen => ,
Reuse => ) 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 host
if( @ARGV != )
{
&Usage( );
exit( - );
} my $client_sock = IO::Socket::INET->new(Proto => 'tcp',
PeerHost => $ARGV[],
PeerPort => $ARGV[] ) || 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( )
{
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, ) )
{
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, * ) )
{
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 wustyunshu@hotmail.comn";
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";
}

perl_nc.pl的更多相关文章

  1. Oracle PL/SQL随堂笔记总结

    1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...

  2. Oracle学习笔记十 使用PL/SQL

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...

  3. PL/SQL配置Oracle数据库路径

    打开PL/SQL-Tools->Preferences-Orcacle->Connecttion 找到配置路径,打开-product\instantclient_11_2\NETWORK\ ...

  4. PL/SQL连接错误:ora-12705:cannot access NLS data files or invalid environment specified

    适合自己的解决方法: 排查问题: 1. 你没有安装Oracle Client软件.这是使用PL/SQL Developer的必须条件.安装Oracle Client后再重试.2. 你安装了多个Orac ...

  5. PL/SQL循环

    1.if循环做判断 SET SERVEROUTPUT ON accept num prompt 'qinshuu'; DECLARE pnum NUMBER :=& num ; BEGIN T ...

  6. PL/0编译器实践---后记

    花了几天时间,把清华版的<编译原理>一书中的PL/0编译器实践了一遍.颇有收获,记录如下: 理解代码的技巧,如何理解一份代码,比如这个程序,其逻辑相对于一般程序就比较复杂了,如何翻译,虚拟 ...

  7. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  8. PL/SQL连接Oracle数据库,中文乱码,显示问号

    问题描述: 登陆PL/SQL,执行SQL语句后,输出的中文标题显示成问号????:条件包含中文,则无数据.         如果不是中文,需要修改注册表值,方法如下: 进入注册表:Win+r,输入re ...

  9. PL/SQL客户端中执行insert语句,插入中文乱码

    问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual;    结果为AMERICAN_ ...

随机推荐

  1. 【Windows】Windows服务管家婆之Service Control Manager

    Service Control Manager,服务控制管理器,人称SCM就是它!在Windows内核中,都可以看到她忙碌的身影,可以说是系统服务和驱动的管家婆了!     SCM管家婆起早贪黑,每次 ...

  2. [BZOJ5339] [TJOI2018]教科书般的亵渎

    题目链接 BZOJ题面. 洛谷题面. Solution 随便推一推,可以发现瓶颈在求\(\sum_{i=1}^n i^k\),关于这个可以看看拉格朗日插值法. 复杂度\(O(Tm^2)\). #inc ...

  3. POJ3254:Corn Fields——题解

    http://poj.org/problem?id=3254 题面来自洛谷:https://www.luogu.org/problemnew/show/1879 农场主John新买了一块长方形的新牧场 ...

  4. BZOJ2693:JZPTAP——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2693 Description   Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 ...

  5. HDU1561:The more, The Better——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=1561 ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允 ...

  6. HDOJ.2094 产生冠军(map)

    产生冠军 点我挑战题目 点我一起学习STL-MAP 题意分析 给出n组数据,代表a打败了b,让判断根据这n组数据是否能判断出来产生了冠军.一开始以为这道题很难,其实用map可以应付. 大原则,赢了的人 ...

  7. 微服务与devops的文章推荐

    http://www.sohu.com/a/125040520_355140 http://www.csdn.net/article/2015-11-18/2826253 http://www.cnb ...

  8. dubbo在项目中的应用

    关于dubbo的使用,我们举个简单例子: 存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表. 在上一篇博文介绍了dubbo的创建,zookeeper的创建完成后,我们可以 ...

  9. Sublime Text 配置python文件

    每次配置Sublime Text的都是好一顿搜索配置信息,今天特地把自己电脑上配置好的信息保存下来,方便以后使用. 用到了 AutoPEP8.Anaconda.SublimeCodeIntel.Sub ...

  10. C#泛型实例详解

    本文以实例形式讲述了C#泛型的用法,有助于读者深入理解C#泛型的原理,具体分析如下: 首先需要明白什么时候使用泛型: 当针对不同的数据类型,采用相似的逻辑算法,为了避免重复,可以考虑使用泛型. 一.针 ...