草庐IT

perl-critic

全部标签

perl - TCP Server 多次接收和响应

我正在尝试在运行该应用程序的同一台PC上模拟TCP服务器。我不知道它是否可以在Perl中完成,因为我不是很有经验。使用下面的代码,第一个回复有效,但我不知道如何实现第二个回复。#!/usr/bin/perl-wuseIO::Socket::INET;usestrict;my$socket=IO::Socket::INET->new('LocalPort'=>'3000','Proto'=>'tcp','Listen'=>SOMAXCONN)ordie"Can'tcreatesocket($!)\n";print"Serverlistening\n";while(my$client=$s

perl tcp 客户端不显示传入数据

我是网络编程新手,无法解决这个问题我有一个服务器(某种LPT端口到TCP/IP代理),它会自动尝试以随机间隔建立连接。我需要监听特定端口并与服务器通信。那就是客户端。它适用于perltcp服务器。但在这种情况下,它会等待......没有任何反应#!/usr/bin/perl-wuseIO::Socket;my$sock=newIO::Socket::INET(LocalHost=>'192.168.1.1',LocalPort=>'7000',Proto=>'tcp',Listen=>1,Reuse=>1,);die"Couldnotcreatesocket:$!\n"unless$s

perl - 如何在 Net::RawIP 中指定包数据?

根据cpan文档,我可以使用以下代码创建原始数据包:useNet::RawIP;$n=Net::RawIP->new({ip=>{saddr=>'my.target.lan',daddr=>'my.target.lan',},});tcp=>{source=>139,dest=>139,psh=>1,syn=>1,},});$n->send;但是我应该在哪里声明数据包包含的数据呢?我可以用另一个模块发送数据包吗? 最佳答案 由于您发送的是tcp数据包,您需要按照文档所述指定:$n=Net::RawIP->new({ip=>{sadd

perl - 使用 curl 和 perl 代理

我想用Perl脚本检查我们的代理是否正常工作。我使用curl命令测试了我们的代理,它按预期工作:curl-x'http://our_proxy:port'-v'http://www.some_adult_site.com'这让我在Wireshark中得到以下TCP流输出:GEThttp://www.some_adult_site.com/HTTP/1.1User-Agent:curl/7.35.0Host:www.some_adult_site.comAccept:*/*Proxy-Connection:Keep-Alive当我用我的Perl脚本尝试这样做时:#!/usr/bin/pe

perl - 脚本崩溃后,如何避免在 Perl 中使用 ophan 监听套接字?

我有一个使用IO::Socket::INET建立TCP服务器的脚本my$socket=newIO::Socket::INET(LocalHost=>'0.0.0.0',LocalPort=>'10010',Proto=>'tcp',Listen=>5,);如果我的脚本在到达服务器套接字关闭之前崩溃或被用户停止,那么下次运行脚本时它无法绑定(bind)到该端口,因为仍有一个进程在监听该端口除掉结果netstat-anobptcpTCP0.0.0.0:100100.0.0.0:0LISTENING22628[System]是的,我正在使用Windows。任务终止请求:taskkill/f/

perl - 如何检查哪种检查端口状态的方法更有效?

我正在编写一个脚本来安排我的一些服务器上的端口检查,并报告状态。我打算选择以下两个选项之一:将netcat(nc)的输出通过管道传输到一个perl变量中,并检查返回状态my$rcode=`nc-z6.6.6.680;echo$?`使用perl模块IO::Socket::PortState做同样的事情。useIO::Socket::PortStateqw(check_ports);my%porthash=(...);check_ports($host,$timeout,\%porthash);print"$proto$_isnotopen($porthash{$proto}->{$_}-

perl - 一台服务器的 whois TCP 套接字连接失败

我正在编写一个简短的脚本来从各自的whois服务器查询域名-而在大多数情况下,虽然通过端口43的TCP连接似乎适用于大多数whois服务器,但对whois.markmonitor的查询.com似乎失败了,出现了一个奇怪的错误,提示Invalidquery。这是我正在使用的准系统:#!/usr/bin/perl#whois.plusestrict;useIO::Socket;my$domain_name="google.com";my$query_socket=newIO::Socket::INET(PeerAddr=>'whois.iana.org',PeerPort=>43,Prot

Perl TCP、打印、选择和 sysread - 缓冲行为

客户端:$socket->autoflush(1);print$socket"abel\n";print$socket"baker\n";print$socket"charlie\n";我的问题:当服务器的select()(或can_read)完成时,我对系统receive缓冲区的内容有什么保证?它可能包含一个“a”吗?还是“abel\nbak”?或者系统缓冲区是否保证恰好包含一个、两个或所有三个从客户端中相应的“打印”语句发送的字符串?这显然对我管理应用程序级缓冲区的方式有影响。 最佳答案 TCP(和一般的SOCK_STREAM)

Perl 和服务器-客户端套接字

背景/语境我有两个脚本,一个可以处理多个客户端的服务器端脚本,以及一个连接到服务器的客户端脚本。向服务器发送消息的任何客户端都会将该消息复制/回显给所有其他连接的客户端。我被困在哪里。今天下午,我一直在凭空寻找一个详尽的解释,其中包含有关Perl和TCP套接字的所有内容的示例。来自谷歌的惊人大量结果仍然列出了2007-2012年的文章。似乎最初有“套接字”模块,随着时间的推移添加了IO::Socket,然后是IO::Select。但是Perldoc页面并没有在一个地方涵盖或引用所有内容,也没有提供足够的交叉引用链接。我收集到,Socket中的大多数原始调用在IO::Socket中都有等

perl - IO::Socket 与 Socket 我都是 "use"吗?

我正在为我的网络类(class)编写一个小程序,但遇到了一些困惑。我目前的工作正常,但我发现我发现的perl网络示例之间存在一些不一致。有的人导入了Socket模块,有的人导入了IO::Socket模块。更令人困惑的是,有些同时导入了Socket和IO::Socket。有道理吗?我以为IO::Socket会导入Socket?我问是因为我正在尝试使用函数“getaddrinfo()”,它一直对我大喊“未定义的子例程&main::getaddrinfo在./tcp_server.pl第13行调用。”在Socketperldoc中。我通过手动指定主机IP让它工作...但我希望它自动检索它正在