【发布时间】:2023-03-29 05:21:02
【问题描述】:
这个问题涵盖了 ServerFault.com 和这里,但这似乎比服务器更多编程。我将我的家用计算机设置为运行 Apache 服务器。它响应端口 5900,该端口是从我的无线路由器转发的端口。然后我设置了一个动态 DNS 服务器来不断更新我的家庭网络的 IP 地址。我知道这部分有效,因为我在不同的无线网络上使用了不同的计算机,并且能够使用 MYURL.com:5900 访问我服务器的索引页面。
我的目标是现在向我的家庭服务器发送一条消息。我在我的家庭服务器上编写了一个脚本,如果我向它发送一条 POST 消息,它会将该消息保存到一个文件中。换句话说,一系列事件应该是这样的:
- 我登录我的网页,在 Input 中输入文本,然后点击发送按钮
- 消息被传递到我的网站服务器。
- 我的服务器运行一个脚本,该脚本使用 CURL 将消息作为 POST 发送到我的家庭服务器的 DDNS
- 家中的服务器接收帖子,并运行将其写入文件的脚本。
我知道如何做 1,2 和 4。我一直试图让 3 工作但不能。我什至无法让 CURL 读取我的家庭服务器的 index.html。这是我在 CURL 中使用的代码(使用 PHP):
$string = 'http://MYURL.com';
echo "sending to " . $string . '<br/>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PORT, 5900);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);
if(curl_error($ch))
{
echo curl_error($ch);
}
echo $response;
curl_close($ch);
我使用 google.com 和默认端口对此进行了测试,它运行良好。它呼应了 google 给我的 html。但是,当我在家庭服务器的 DNS 上运行它时,它总是超时。当我不添加超时时,它说它无法连接。这是使用完全相同的 URL,当放入浏览器时,它会正确地向我发送我的家庭服务器的 index.html。
有谁知道出了什么问题?另外,如果有更好的方法来做到这一点,那是什么?
我知道这是一个很长的问题,所以非常感谢。
伊森
【问题讨论】: