为什么Windows上的ActivePerl程序停止接受套接字连接?
我正在使用Windows上Perl(ActivePerl)上的为什么Windows上的ActivePerl程序停止接受套接字连接?,windows,perl,sockets,activeperl,Windows,Perl,Sockets,Activeperl,我正在使用Windows上Perl(ActivePerl)上的fork()作为基本套接字服务器,但显然存在一些问题(几次之后它将不接受连接),有什么解决方法吗 以下是相关代码的部分: while($client = $bind->accept()) { $client->autoflush(); if(fork()){ $client->close(); } else { $bind->close(); new_client($client); e
fork()
作为基本套接字服务器,但显然存在一些问题(几次之后它将不接受连接),有什么解决方法吗
以下是相关代码的部分:
while($client = $bind->accept()) {
$client->autoflush();
if(fork()){ $client->close(); }
else { $bind->close(); new_client($client); exit(); }
}
窗户没有叉子。试图模仿它通常会产生不太理想的结果 最好的解决方案可能是重写代码,使其不使用fork。可能是线程?我建议安装并使用它,因为可能没有令人信服的理由让您自己编写所有侦听和分叉逻辑,而且Net::Server已经在包括ActivePerl在内的许多平台上进行了良好的测试。个性与您正在编写的代码最为相似,不过我建议您改用它,因为它以最低的成本提供了更好的性能。如果说几个,您的意思是64,那么您应该看到。在父进程中,您应该每隔一段时间调用
waitpid-1和&WNOHANG
,以清理已完成的子进程。Windows上的Perl在后台使用线程模拟fork()。