1

受信データをリッスンするソケット サーバーを作成する必要があります。socketSetup という PHP を作成し、ページの読み込み後に実行します。ファイル自体はサブディレクトリにあります。ソケットをアドレスにバインドする必要があります。

これはこのように可能ですか?私の主な質問は、それをバインドする方法にあります...メインドメインまたはサブディレクトリにバインドするだけですか?

$sock = socket_create(AF_INET, SOCK_STREAM, 0);

socket_bind($sock, "http://mydomain.com/mysubdirectory, 80) or die('Could not bind to address');

ありがとう

4

1 に答える 1

1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...::: サーバーアプリケーションをどのアドレスにバインドすればよいですか? :::... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

推奨: 0.0.0.0 // 利用可能なすべてのアドレスにバインドします。

そのとき何をしているのかわかっている場合は、ルーターによってマシンに割り当てられた IPを使用する必要があります。これは、 Local Networkの外でパケットを待っている場合にのみ必要です。

それ以外の場合は、127.0.0.1 でバインドする必要があります

マシンに割り当てられた IP は次のようになります。
例: 192.168.1.5
ネットマスク: 255.255.255.0 <-- これは無視してください


それを見つける、簡単な方法:

でアドレスを取得できますが、$_SERVER['SERVER_ADDR']それに頼るべきではありません。

それを見つける、ハードコードされた方法:

Windows の場合: ipconfig /allと入力し、 IPv4 アドレスエントリを検索します。
Linux の場合: ifconfig
と入力します。 コンソールにアクセスできない場合は、phpinfo()を使用します。<-それについてはわかりません


バインド http://www.example.com/dir/ は間違っており、機能しません。

注意:マシンは外部 IP (DSLAM によって割り当てられたもの、つまり128.31.53.90 )について何も知りませんは主にルーターの仕事であるためです。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...::: サーバーアプリケーションをどのポートにバインドすればよいですか? :::... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

クライアントがデータを送信すると、最初にルーターに到着し、ルーターが処理を決定します。決定は、ルーターの NAT テーブルと着信ポートに基づいています。

通常、NAT テーブルは次のようになります。

+==============================================+
|   LAN IP   |  Incoming Port  | Outgoing Port |
+============+=================+===============+
|192.168.1.5 |       8080      |       80      |
+------------+-----------------+---------------+
|192.168.1.2 |       25        |       25      |
+------------+-----------------+---------------+

X を次の構造を持つパケットとします。

         Header            Data
 +===================+===============+
|-| Your External IP |      ...      |
|X|                  |      ...      |
|-| Destination Port |      ...      |
 +===================+===============+

ルーターは、テーブル内のdestination port同様のincoming portエントリ を取得して検索します
。見つかった場合は、パケットを一致する LAN IP にリダイレクトします: 送信ポート

例えば:

パケットは宛先ポート 8080 で到着し、192.168.1.5:80 に転送されます。

       >>                    25          >>       192.168.1.2:25

したがって、8080 で誰かが送信したパケットをキャッチするには、192.168.1.5:80、
またはポート 25 でパケットを待機している場合は 25 でバインドする必要があります。

注意: Web サーバーを実行している場合、ポート 80 でのバインドは失敗します。これは、デフォルトでポート 80 にバインドされているためです (変更しない限り)。

于 2013-07-09T18:53:20.737 に答える