`
阿尔萨斯
  • 浏览: 4150925 次
社区版块
存档分类
最新评论

[Perl]测试程序时用Perl真是太方便了

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

测试自己的业务数据远程传送服务,需要一个能模拟对方Socket的服务,
这时候就显出Perl的便利了。一分钟搞定。
代码如下,其实也是从CPAN那里拿来的:
####################################################################
#
# 工程项目: 模拟Socket服务器
#
# 模块任务: 来自intenel,这个脚本提供一个TCP echo 服务,版本是2
#
# 程序名称: TcpEchoServerForLDB.pl
#
# 程序说明:
# 监听固定Socket端口,如果收到数据,就给对方返回一个字符串“ok回车”,
# 这样来模拟接收数据的Socket服务。
#
# 使用说明:TcpEchoServerForLDB.pl [port]
# [port]指要监听的端口号
####################################################################

#!/usr/bin/perl
# Figure 5.4: The reverse echo server, using IO::Socket

##================================================================##
system("cls");
warn("/n");
warn("TCP ECHO Simple Server Version 2.0/n");
warn("没有版权 Linktone 2005-2006。不保留所有权利。/n");
warn("/n");
warn("用法: TcpEchoServerForLDB.pl [port]/n");
warn("[注意]如果没有传递端口参数,默认监听4330端口/n");
warn("[注意]发送的数据请以回车换行结尾!/n");
##================================================================##

##================================================================##
## 引用的库声明 2
use strict;
use IO::Socket qw(:DEFAULT :crlf);
##================================================================##

##================================================================##
use constant MY_ECHO_PORT => 4330;
$/ = CRLF;
my ($bytes_out,$bytes_in) = (0,0);

my $quit = 0;
$SIG{INT} = sub { $quit++ };

my $port = shift || MY_ECHO_PORT;

my $sock = IO::Socket::INET->new( Listen => 20,
LocalPort => $port,
Timeout => 60*60,
Reuse => 1)
or die "Can't create listening socket: $!/n";

warn "服务守候在端口$port.../n";
while (!$quit)
{
next unless my $session = $sock->accept;

my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost;
my $port = $session->peerport;
warn "她来了:[$peer,$port]/n";

# 要回送的字符串
my $msg_Output = "ok回车";

while ()
{
$bytes_in += length($_);
chomp;
my $msg_out = (scalar reverse $_) . CRLF;
warn("Message From [$peer,$port]:$msg_out");
print $session $msg_Output;
##warn("Send Message To [$peer,$port]:$msg_Output");
$bytes_out += length($msg_Output);
}
warn "她走了[$peer,$port]!/n";
close $session;
}
##================================================================##

print STDERR "bytes_sent = $bytes_out, bytes_received = $bytes_in/n";
warn("bytes_sent = $bytes_out, bytes_received = $bytes_in/n");
close $sock;




测试自己的业务数据远程传送服务,需要一个能模拟对方Socket的服务,
这时候就显出Perl的便利了。一分钟搞定。
代码如下,其实也是从CPAN那里拿来的:
####################################################################
#
# 工程项目: 模拟Socket服务器
#
# 模块任务: 来自intenel,这个脚本提供一个TCP echo 服务,版本是2
#
# 程序名称: TcpEchoServerForLDB.pl
#
# 程序说明:
# 监听固定Socket端口,如果收到数据,就给对方返回一个字符串“ok回车”,
# 这样来模拟接收数据的Socket服务。
#
# 使用说明:TcpEchoServerForLDB.pl [port]
# [port]指要监听的端口号
####################################################################

#!/usr/bin/perl
# Figure 5.4: The reverse echo server, using IO::Socket

##================================================================##
system("cls");
warn("/n");
warn("TCP ECHO Simple Server Version 2.0/n");
warn("没有版权 Linktone 2005-2006。不保留所有权利。/n");
warn("/n");
warn("用法: TcpEchoServerForLDB.pl [port]/n");
warn("[注意]如果没有传递端口参数,默认监听4330端口/n");
warn("[注意]发送的数据请以回车换行结尾!/n");
##================================================================##

##================================================================##
## 引用的库声明 2
use strict;
use IO::Socket qw(:DEFAULT :crlf);
##================================================================##

##================================================================##
use constant MY_ECHO_PORT => 4330;
$/ = CRLF;
my ($bytes_out,$bytes_in) = (0,0);

my $quit = 0;
$SIG{INT} = sub { $quit++ };

my $port = shift || MY_ECHO_PORT;

my $sock = IO::Socket::INET->new( Listen => 20,
LocalPort => $port,
Timeout => 60*60,
Reuse => 1)
or die "Can't create listening socket: $!/n";

warn "服务守候在端口$port.../n";
while (!$quit)
{
next unless my $session = $sock->accept;

my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost;
my $port = $session->peerport;
warn "她来了:[$peer,$port]/n";

# 要回送的字符串
my $msg_Output = "ok回车";

while ()
{
$bytes_in += length($_);
chomp;
my $msg_out = (scalar reverse $_) . CRLF;
warn("Message From [$peer,$port]:$msg_out");
print $session $msg_Output;
##warn("Send Message To [$peer,$port]:$msg_Output");
$bytes_out += length($msg_Output);
}
warn "她走了[$peer,$port]!/n";
close $session;
}
##================================================================##

print STDERR "bytes_sent = $bytes_out, bytes_received = $bytes_in/n";
warn("bytes_sent = $bytes_out, bytes_received = $bytes_in/n");
close $sock;




分享到:
评论

相关推荐

    Perl Testing程序高手秘笈

    压缩包包括: 1.Perl testing a developer's notebook.chm 英文版 2.Perl.Testing程序高手秘笈.pdf 中文版(含目录) 程序高手秘笈》系列 前言 第一章 测试起步 ...测试程序 测试交互式程序 测试共享库

    Perl Testing程序高手秘籍

    《Perl Testing程序高手秘笈》假设读者以前没有写过任何测试,用9章的篇幅来讨论Perl的测试。从最简单的东西讲起,最后带领你探索一些实际开发情况下可能碰到的测试问题。...测试程序 测试交互式程序 测试共享库

    Perl的Email 发送程序与插件

    Perl的Email 发送程序与插件。pl 文件加 Mail:Sender插件,程序亲自测试是成功的!

    Perl程序开发(ActiveStateperldevkit)V9.5.1免费安装版

    利用PerlAPP可以将程序运行在HP/UX,LINUX,SOLARIS,WINDOWS等平台,可视化调试器可以远程调试,PerlNet可以编译NET部分。...为Perl程序员开发程序提供必不可少的工具,使得创建、构造程序变得容易,可以将perl程序

    PERL编程24学时教程.pdf

    1.3 编写你的第一个Perl程序 9 1.3.1 键入程序 9 1.3.2 运行程序 9 1.3.3 程序正确将会发生什么情况 10 1.3.4 Perl程序的具体运行过程 10 1.3.5 必须知道的一些情况 11 1.4 课时小结 12 1.5 课外作业 12 1.5.1 专家...

    Perl脚本参考手册

    与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。 .Perl...

    perl语言编写实现浮点格式数据加减乘除的程序_generallypx9_mantissa_Perl加减_Perl_

    若将数据表示为浮点数格式,即有exponent和mantissa两部分,用perl语言编写实现浮点格式数据加减乘除的程序。(测试时与编程语言提供的浮点数运算进行比较,包括代码文件和设计测试报告)

    Perl程序开发(ActiveState Perl Dev Kit Pro) v9.1.1.295479 官方特别版

    使得创建、构造程序变得容易,可以将perl程序在HP-UX、Linux、Solaris和Windows平台下生成各自可执行文件,调试Perl脚本也是一件容易的事,支持将 VBScript转换成Perl,也能用Perl创建.NET 和 ActiveX控件

    perl编译器-ActivePerl-5.8.0.806-MSWin32-x86.msi

    ActivePerl-5.8.0.806-MSWin32-x86.msi,perl的安装程序,Perl是一种通用编程语言。凡是其他编程语言能够使用的地方,都有它的用武之地。在各行各业中,它已经被用于你能够想像到的各种各样的任务的处理。它已经用于...

    perl教程,txt格式。

    用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x &lt;program&gt;就可以执行了:$./&lt;program&gt;。如果系统提示:&quot;/usr/local/bin/perl not found&quot;,则说明你没有安装成功,请重新安装。 ...

    PCRE(Perl Compatible Regular Expressions)

    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规...测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题

    DzSoft Perl Editor

    CGI 编辑工具,它的特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 Web Server 的运作下就能够通过调用 Perl 解释程序测试已编写好的 CGI 程式是否有误...

    Perl最佳实践 中文版

    Perl最佳实践的目的是协助你编写出更好的Perl程序,书的内容涵盖编码技巧的众多方面,比如部署、名称选择、程序分解、接口设计与实现、模块化、测试与调试等,以产生清淅、强舰有效率可维护的简明代码为最终目标。...

    perl的编程基础

    与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。 .Perl...

    Advanced Perl Programming(2nd)

    本书清晰地解释了许多Perl的概念,譬如内省(introspection)、重载内建函数、基于面向对象模型的Perl扩展和如何对perl程序的稳定性进行测试等诸多方面。.. 另外,这本书还阐述了其他一些热门课题,譬如对象关系...

    Perl 实例精解(第三版).pdf

    对每个主题都使用了范例说明,从Perl变量、正则表达式,到编写报表、CGI脚本和网络应用,并对范例程序进行了解释。读者可以很容易地通过这些范例掌握Perl语言的语法。附录含有完整的函数和定义、命令行开关、特殊...

    perl编程24学时教程.rar

    本书循序渐进、深入浅出地介绍了Perl的主要特性及用Perl进行CGI编程的知识。全书包括24个学时内容和一个附录,共分四部分。第一部分主要讲述Perl的基本概念,第二部分重点介绍Perl的一些高级特性,第三部分介绍如何...

    perl v5.18.1.zip

    与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。Perl提供...

    PERL编程24学时教程

    1.3 编写你的第一个Perl程序 9 1.3.1 键入程序 9 1.3.2 运行程序 9 1.3.3 程序正确将会发生什么情况 10 1.3.4 Perl程序的具体运行过程 10 1.3.5 必须知道的一些情况 11 1.4 课时小结 12 1.5 课外作业 12 1.5.1 专家...

Global site tag (gtag.js) - Google Analytics