草庐IT

perl-critic

全部标签

perl - 与简单 TCP 服务器的持久连接

在perl中使用这个简单的TCP服务器/客户端示例,我如何在不必重新打开连接的情况下继续发送和接收(连续接收数据,并在数据到达时对其进行处理)?服务器:useIO::Socket::INET;#auto-flushonsocket$|=1;#creatingalisteningsocketmy$socket=newIO::Socket::INET(LocalHost=>'0.0.0.0',LocalPort=>'7777',Proto=>'tcp',Listen=>5,Reuse=>1);die"cannotcreatesocket$!\n"unless$socket;print"se

Perl Net::Server 热部署

我正在使用Net::Server::Prefork启动TCP服务器。启动例程如下所示:use5.10.1;usestrict;usewarnings;useparent'Net::Server::Fork';Dispatcher->run('host'=>$host||'*','port'=>$port||7000,'ipv'=>'*','log_level'=>$main::config{'backend.loglevel'}||0,'log_file'=>$main::config{'backend.logfile'}||undef,'pid_file'=>$main::confi

perl - 是否可以在不写入的情况下检查 TCP 连接是否断开?

我想知道是否可以在不尝试写入的情况下确定接受的套接字连接是否已断开连接。IO::Select仍然表示可以使用can_write写入套接字,即使在套接字连接丢失之后也是如此。是否可以在不写入的情况下检查TCP连接是否已断开(在出现意外互联网中断的情况下)。 最佳答案 这与其说是Perl问题,不如说是TCP。诸如断开电缆/互联网连接之类的事件不会导致TCP事件。因此,您必须写入TCP连接以确保它仍然处于连接状态。您可以添加一个ping/echo消息,唯一的目的是知道连接仍然可用。 关于per

Actor-Critic算法

1.Actor-Critic算法简介        Actor-Critic从名字上看包括两部分,演员(Actor)和评价者(Critic)。其中Actor使用我们上一节讲到的策略函数,负责生成动作(Action)并和环境交互。而Critic使用我们之前讲到了的价值函数,负责评估Actor的表现,并指导Actor下一阶段的动作。        回想上一篇的策略梯度,策略函数就是我们的Actor,但是那里是没有Critic的,我们当时使用了蒙特卡罗法来计算每一步的价值部分替代了Critic的功能,但是场景比较受限。因此现在我们使用类似DQN中用的价值函数来替代蒙特卡罗法,作为一个比较通用的Cri

mysql - perl tcp 套接字服务器到 mysql

我必须创建一个小的perl脚本来创建一个tcp套接字并将来自这个套接字的输入放入一个mysql表中。背景:我通过此TCP套接字从SiemensHipath电话系统获取调用数据记录。我必须在数据库中写入CSV数据以备将来使用。我得到的格式如下:13.05.14;15:01:14;3;10;00:26;00:00:45;0123456789;;1;我是perl的新手,有一些“新手”问题:)1:如何在后台运行该脚本(作为守护进程)?2:脚本只处理交付的csv行的最后一行。如果有两行,它会忽略第一行。我该如何解决?3:今天我从我的脚本中得到了这个输出:DBD::mysql::stexecute

mysql - Perl Web 应用程序问题 : DBI connect failed: Can't create TCP/IP socket (10106)

我的PerlWeb应用程序有问题,该应用程序在Windows2008r2上的Apache2.2上运行,在CentOS服务器上使用单独的MySQL数据库。这是问题:我定期收到错误超时:DBIconnect('host=10.148.xxx.xxx:database=XXX','root',...)failed:Can'tcreateTCP/IPsocket(10106)当我说周期性时,这意味着大部分时间一切都按预期工作,但有时我会收到此消息并导致我的应用程序抛出错误页面。我在互联网上搜索了很多,发现了一些对我不起作用的推荐解决方案。首先,我认为我的数据库服务器无法访问,但使用MySQL企

Perl RawIP CWR 标志

我正在使用Net::RawIP发送带有特定TCP标志的数据包。有没有办法设置CWR标志?TCP协议(protocol)key“res2”设置了ECE标志,但“res1”似乎设置了NS标志:$n=Net::RawIP->new({ip=>{saddr=>'my.target.lan',daddr=>'my.target.lan',},tcp=>{source=>123,dest=>123,res1=>1,res2=>1,fin=>1,syn=>1}});这是数据包标志的Wireshark捕获: 最佳答案 res2是两位宽。res2=>

perl - 使用 perl 模块 Log::Syslog::Fast - 无法捕获异常

我正在使用Log::Syslog::Fast将日志转发到系统日志服务器。我正在测试脚本,看看如果系统日志服务器突然崩溃,它会如何react。为了测试,我创建了一个包含测试消息的文件,启动脚本,然后在系统日志服务器收到2条消息后关闭系统日志服务器。脚本发送了第三条消息,然后就死掉了。终止未被eval捕获&'usewarnings'FATAL'=>'all';'无济于事。有人可以帮我捕获异常并更优雅地关闭脚本吗?这里需要做的是-在发送Command2之后,脚本应该捕获异常并显示:Fail:Command3代码摘录:$logger=Log::Syslog::Fast->new(LOG_TCP

multithreading - Perl TCP 服务器处理多个客户端连接

首先我会说我对Perl和Socket编程的经验很少,所以我很感激我能得到的任何帮助。我有一个TCP服务器,它需要同时处理多个客户端连接,并且能够随时从任何一个客户端接收数据,并且还能够根据收到的信息将数据发送回客户端。例如,Client1和Client2连接到我的服务器。Client2发送“Ready”,服务器对其进行解释并向Client1发送“Go”。以下是我目前所写的内容:my$sock=newIO::Socket::INET{LocalHost=>$host,//definedearlierincodeLocalPort=>$port,//definedearlierincode

perl - 如何在我的 Perl TCP 脚本中诊断 "Cannot determine peer address"?

我有这个小脚本,它可以很好地完成工作,但有时它往往会失败。它在2种情况下失败:发送错误:Cannotdeterminepeeraddressat./tcp-new.plline52没有输出或任何东西,它只是无法将它得到的内容传送到连接的Tcp客户端。通常它发生在我断开与服务器的连接后,回家并再次连接它。要修复此问题,需要重新启动并开始工作。有时这个问题之后会出现第1点提到的问题。注意:当我断开连接并在短时间内重新连接时,这不是问题(除非发生错误nr1)。那么谁能帮助我使这段代码更稳定一点,这样我就不必每天重新启动它了?#!/usr/bin/perlusestrict;usewarnin