php - 从另一台机器连接到 react 服务器

标签 php linux http reactphp

按照 http://reactphp.org/ 中的说明进行操作,我创建了一个服务器:

<?php
require 'vendor/autoload.php';
$app = function ($request, $response) {
    $response->writeHead(200, array('Content-Type' => 'text/plain'));
    $response->end("Hello World\n");
};

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http = new React\Http\Server($socket, $loop);

$http->on('request', $app);
echo "Server running at http://127.0.0.1:1337\n";

$socket->listen(1337);
$loop->run();

然后我在 IP 为 192.168.1.200 的 Linux 机器上启动它,它似乎正在运行:

[Michael@devserver react]$ php example.php
Server running at http://127.0.0.1:1337

[root@devserver react]# netstat -lnp | grep 1337
tcp        0      0 127.0.0.1:1337              0.0.0.0:*                   LISTEN      25984/php

为了测试它,他们说要放置 http://127.0.0.1:1337/在浏览器中,但机器没有浏览器。作为替代方案,我使用了 cURL,它实际上正在运行,但它只能作为 127.0.0.1 访问(我已经关闭 iptables 进行测试,但没有帮助)。

<?php
function test($ip)
{
    $ch      = curl_init();
    curl_setopt_array( $ch, [CURLOPT_URL=>$ip,CURLOPT_RETURNTRANSFER=>true,CURLOPT_PORT=>1337] );
    echo("\nTest for '$ip'\n");
    echo var_dump(curl_exec( $ch ));
}
test('127.0.0.1');
test('192.168.1.200');
test('192.168.1.201');

输出:

Test for '127.0.0.1'
string(12) "Hello World
"

Test for '192.168.1.200'
bool(false)

Test for '192.168.1.201'
bool(false)

ifconfig 显示以下内容:

[root@devserver ~]# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:282 errors:0 dropped:0 overruns:0 frame:0
          TX packets:282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:54330 (53.0 KiB)  TX bytes:54330 (53.0 KiB)

wlan0     Link encap:Ethernet  HWaddr B8:76:3F:69:31:95
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ba76:3fff:fe69:3195/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26783 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22265 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3599653 (3.4 MiB)  TX bytes:5331824 (5.0 MiB)

[root@devserver ~]#

如何从另一台机器连接到这个 React 服务器?

最佳答案

$socket->listen(1337); 行的第二个参数默认为“127.0.0.1”。您可以尝试输入正确接口(interface)的实际 IP,以便它绑定(bind)到那个接口(interface)(即将其更改为 $socket->listen(1337,'192.168.1.201');)

然而,这假设您的 IP 永远不会改变。如果您希望服务器通过 127.0.0.1 和您的外部 ip 接受连接(基本上接受来自任何接口(interface)的连接),那么您将需要使用 `$socket->listen(1337,'0.0.0.0');这基本上是一个特殊的 IP,代表“本地机器上的所有接口(interface)”。

关于php - 从另一台机器连接到 react 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441491/

相关文章:

php - 完全奇怪的简单 php 执行 -(谁能解释一下[我花了 4 个小时才找到])

php - 如何匹配括号内(可能是嵌套的)换行符? (正则表达式)

Linux:如何将 USB 驱动程序分配给设备

linux - 比较两个 csv 文件的第 1 列并找到与 >= && < 最接近的匹配项,然后打印对

http - CLISP open-http 示例

php - 克隆 PHP 示例用法

linux - 我怎样才能从文件中删除一些东西?

rest - 无法理解如何将帖子发送到 Lingvo API

http - 一个端口可以监听两种不同的协议(protocol)吗?

php - 修改密码页面