2017-06-20 9 views
0

PHPでソケットを作成して着信接続を待機するコードを記述しました。特定のポートでリスニングソケットを作成するためのPHPコード(Compute Engineで実行中)

私が選んだポートではなく、ランダムなポートでリッスンするTCPソケットを開く以外は、すべてうまくいっています。

私はGoogle Compute Engine(GCE)でこのコードを実行しています。

set_time_limit(0); 
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
    socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1); 
    $address = '35.190.179.17'; 
    //bind socket to specified host 
    socket_bind($socket, $address,54468); 
    //listen to port 
    socket_listen($socket); 
+0

リスニングソケットを開くと、そのリスニングソケットは特定のポートにあります。誰かが接続すると、その接続は他のポートに移され/委任されるので、リスニングソケットは新しい接続を引き続き聞くことができます。リスニングソケットはオペレータとして考えてください。より多くの接続のために回線を開いたままにしておく必要があります。 –

+0

私は指定されたポートを使ってtelnetで接続することすらできません。実際にはnetstat -lを使って開いているポートを見つけ、telnetを使ってそのポートに接続します。 –

+0

php.netの例のように、エラーチェックをコードに追加してみるべきです。 socket_xコマンドのいずれかが失敗することがあります。 http://php.net/socket_set_option –

答えて

0

私は内部IPの代わりに、外部IPアドレスを使用して、外部接続用のポートを開くことにより解決される問題を得た:

は、ここで私が試した正確なPHPコードです。

Compute Engineは外部IPアドレスを使用してソケットバインドを許可していませんでした。

関連する問題