问题标签 [http-daemon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
613 浏览

perl - 我如何清理我的守护进程?

我正在使用文档中概述的循环结构的修改版本运行HTTP::Daemon的本地实例。我已经可以在用户的​​请求下退出循环,但是我的 Perl 脚本的后续执行给了我错误:

HTTP::Daemon:地址已在使用中...在 /path/to/script 行 NNN,第 3 行传播。

我还必须做些什么才能成为一个好公民并在我的守护进程之后进行清理?

0 投票
2 回答
1106 浏览

perl - 使用 perl HTTP::Daemon 的 HTTP 服务器 - 只能在服务器运行的同一台计算机上工作

我将创建一个简单的 HTTP 服务器,我还将为其创建一些客户端。现在我正在通过浏览器使用 HTTP::Daemon 测试我在 perl 中创建的简单服务器。

我的服务器代码如下:

目前,我的问题是当我在同一台机器上测试该服务器时,它可以正常工作。当我尝试通过同一网络中的另一台计算机访问服务器时,服务器根本没有收到请求。我是否错过了将服务器暴露给外界的强制性步骤(可能很简单?我是新手!)?

感谢您在这方面的帮助,


更新:下面是我在运行服务器时收到的输出示例:

网络服务器启动!

服务器地址:0.0.0.0

服务器端口:80

请通过以下方式与我联系:

收到请求...

收到请求...

网址:/

收到请求...

网址:/

收到请求...

收到请求...

网址:/


最近更新:

我意识到问题与我上面描述的不同。毕竟,我可以从另一台计算机访问我的服务器。从代码中可以看出,我没有创建单独的线程来满足请求。奇怪的是,当我从浏览器访问我的服务器时,来自其他计算机的所有请求都会超时,直到我关闭最初发送请求的浏览器(并得到请求的答案)。同时,来自同一浏览器的多个请求都成功完成。但是,当我使用 libwww-perl 库从用 Perl 编写的客户端发送请求时,这不会发生。

这如何转化为最初的问题? 每次我想测试我的服务器时,我都会先在同一台机器上使用浏览器进行测试。然后,我尝试在不关闭最初测试服务器的浏览器的情况下从另一台机器访问服务器;而且,正如预期的那样,它没有用。

谢谢你们的评论。

0 投票
1 回答
29 浏览

http-daemon - 如何实现HttpDaemon

我是一名 Java 程序员。我必须实现 HttpDaemon。我认为它会用 'C' 或 'Perl' 编写。请帮助我了解它是什么以及如何实施它。

0 投票
1 回答
255 浏览

perl - 当我停止循环时 HTTP::Daemon 崩溃

我正在开发一个 adhoc GUI,以便我可以轻松地查看来自 VMWare Perl SDK 的一堆数据,而无需在 IIS 下设置一堆脚本。基本思想是启动脚本,并让它分叉两个进程。一个是 HTTP::Daemon Web 服务器,两秒后是 Win32::IEAutomation 运行浏览器。我承认这并不漂亮,但我对 VMPerlSDK 比对 VMCOMSDK 更满意。另外,我很想知道我是否可以使它起作用。

据我所知,程序启动正常。叉子工作。小 URI 解析器工作。唯一的问题是每当我尝试调用 /quit 来关闭服务器时,脚本就会爆炸。

任何建议(除了应该如何使用 IIS 和 AutoIT,我知道,我知道)将不胜感激。谢谢!

0 投票
1 回答
318 浏览

perl - HTTP::Daemon fork 未在 SIGTERM 上获得的子进程

更新:

我有一个单元测试(认为它是 X)。有一个子过程(Y)。Y 没有明确分叉。X 分叉,因此它可以执行 Y。这是 X:

我从 X 得到的输出是:

这表明 Y 已收到信号并停止。但是 Y 并没有停止,它进入了一个失效状态(我之前称之为“僵尸样”)。据我所知,这是一个已完成的过程,通过/proc不可用kill(0, $pid)但可见。ps

在实际的过程 Y 中,情况就不同了:

我从未在 Y 的输出中看到 theExiting...或 the Received signal,只有Starting server消息。Y 正在运行并接受来自 X 的所有连接,因此通过了测试;它只是无法停止。

这是 X 发出 Y 信号之前和之后某些调试的输出。

注意defunctY 的状态,注意有两个进程。我没有开始两个,它没有分叉,所以我假设HTTP::Daemon分叉。我明确修改了 X 以发送不同的信号。这次我发送了SIGINT,就像我按 Ctrl-C 时它实际上停止了挂起X和两者Y。这次我收到了Signal receivedY 的消息,但它仍然进入失效状态并且仍然有两个进程。

我的问题是针对HTTP::DaemonPerl 而不是。究竟是什么HTTP::Daemon(源自IO::Socket::INET)实际上导致了这种混乱,为什么?其次,我如何适应YHTTP::Daemon 正在做的事情?

0 投票
1 回答
177 浏览

perl - 当客户端使用 HTTP::Daemon 超时时停止处理

有没有办法以HTTP::Daemon某种方式检测客户端何时断开连接(例如由于超时)并随后杀死自己?

现在,这就是我编写服务器的方式:

这只是假设客户端将在 180 秒后放弃,这可能是真的,也可能不是。只要客户继续等待响应,我就想继续处理,但不会更长。

0 投票
1 回答
992 浏览

perl - Perl HTTP 守护程序服务器 - 读取 POST JSON 正文

我正在使用HTTP::Daemon为我的 API 创建一个 http 服务器。在以下示例文档的帮助下,我能够创建一个基本的 HTTP 服务器。

但是,我的 API 应该接受 JSON 作为向服务器发送请求的主体。所以,我需要阅读 JSON 以便处理它。我知道,如何阅读 url 参数$r->uri->query_form();

有没有办法读取 POST JSON?

0 投票
1 回答
278 浏览

multithreading - Perl 简单的网络服务器不能同时处理多个请求

我写了一个简单的网络服务器,它应该不断地处理同时的请求。但是,即使在分离线程之后,它也不会处理同时请求。有人可以帮忙吗?

网络服务器.pl

测试.pm

0 投票
1 回答
63 浏览

perl - HTTP::Daemon:如何在 HTTP-Header 中为服务器设置自定义值?

我正在使用HTTP::DaemonHTTP 服务器。

我尝试覆盖服务器的 HTTP 标头条目。但是,我得到的只是第二个条目,其值为“MyServer”。

知道如何覆盖原始值“libwww-perl-daemon”吗?

有一种product_tokens获取值的方法,但无法设置值。