从另一台机器连接到反应服务器
Connecting to react server from another machine
按照 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”。您可以尝试输入正确接口的实际 IP,以便它绑定到那个接口(即将其更改为 $socket->listen(1337,'192.168.1.201');
)
然而,假设您的 IP 永远不会改变。如果您希望服务器通过 127.0.0.1 和您的外部 ip 接受连接(基本上接受来自任何接口的连接),那么您将需要使用 `$socket->listen(1337,'0.0.0.0');这基本上是一个代表"all interfaces on the local machine".
的特殊IP
按照 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”。您可以尝试输入正确接口的实际 IP,以便它绑定到那个接口(即将其更改为 $socket->listen(1337,'192.168.1.201');
)
然而,假设您的 IP 永远不会改变。如果您希望服务器通过 127.0.0.1 和您的外部 ip 接受连接(基本上接受来自任何接口的连接),那么您将需要使用 `$socket->listen(1337,'0.0.0.0');这基本上是一个代表"all interfaces on the local machine".
的特殊IP