2016-11-05 26 views
2

からサーバーを反応させるために接続し、私は、サーバーを作成しました:<a href="http://reactphp.org/" rel="nofollow noreferrer">http://reactphp.org/</a>の指示に従い、別のマシン

<?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(); 

私は、192.168.1.200のIPを持つLinuxボックス上でそれを開始し、そしてそれを実行しているように見えます:

[[email protected] react]$ php example.php 
Server running at http://127.0.0.1:1337 

[[email protected] 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次のことを示しています

[[email protected] ~]# 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) 

[[email protected] ~]# 

私はこれに接続することができますどのように他のマシンからサーバーを反応させますか?

答えて

1

$socket->listen(1337);行の2番目のパラメータは、デフォルトで '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');これは基本的に「ローカルマシン上のすべてのインターフェイス」を表す特別なIPです。

+0

ありがとうございます。そうです、私はこれを後で発見しました。ドキュメントは少し難しいです。あなたはどうやってそれを学びましたか? – user1032531

関連する問題

 関連する問題