PHPでネットワークをプログラミングする場合、 Connect()関数は、クライアントとサーバー間の接続を確立するための重要なステップです。ネイティブソケットを使用してプログラミングする場合でも、特定の拡張機能ライブラリを呼び出す場合でも、接続パラメーターを正しく設定することが重要です。その中で、ポート番号の精度は、接続を正常に確立できるかどうかに直接影響します。
ポートは、さまざまなアプリケーションを識別するためにコンピューターネットワークで使用される論理番号です。通常、サーバーは1つ以上のポートでクライアントリクエストに耳を傾けます。たとえば、HTTPサーバーはデフォルトでポート80に耳を傾け、httpsはデフォルトでポート443に耳を傾けます。クライアントは、正しいサービスにリクエストを送信するために、正しいサーバーIPとポートを指定する必要があります。
ポートが正しく設定されていない場合:
接続リクエストは、サーバー上で聞くことがないポートに送信されます。
ポートがアプリケーションをバインドしないため、サーバーは応答できません。
最終的に、接続が失敗します。
ポート番号のエラー<br> 入力ポート番号は、サーバーが実際に聞いたポートと一致しないため、 Connect()が適切なサービスを見つけられません。
ファイアウォールまたはネットワークポリシーの制限<br> 一部のポートは、ファイアウォールによってブロックまたは禁止されています。これにより、ポート番号が正しい場合でも、接続障害が発生する可能性があります。
サーバーは、対応するサービス<br>を起動していません ターゲットサーバーには、このポートでプログラムをリスニングしていないため、接続が拒否されます。
ポートフォーマットエラー<BR> connect()に渡されたパラメーターでは、ポートは法的整数である必要があり、間違ったタイプまたはフォーマットも障害を引き起こす可能性があります。
サーバーアドレスとポートを正しく構成する必要があると仮定して、PHPソケット拡張機能を使用してTCP接続を確立する例を次に示します。
<?php
$host = "m66.net"; // ドメイン名を置き換えます
$port = 8080; // 正しいポート番号
// 作成するsocket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("作成するsocket失敗: " . socket_strerror(socket_last_error()));
}
// サーバーに接続します
$result = socket_connect($socket, $host, $port);
if ($result === false) {
die("连接失敗: " . socket_strerror(socket_last_error($socket)));
}
echo "正常に接続されています {$host} ポート {$port}\n";
// 閉鎖socket
socket_close($socket);
?>
コードでは、 $ホストはM66.netに設定されており、要件に応じてURLドメイン名を置き換えることができます。
ポート番号は、サーバーが聞くポートと一致する必要があります。そうしないと、 socket_connectがエラーを返します。
ポートは、ネットワーク通信では無視できない重要なパラメーターです。 Connect()関数を使用する場合、クライアント要求がサーバー上の反応しないポートに送信されるため、間違ったポート構成は必然的に接続障害につながります。開発するときは、ターゲットサーバーのポート番号を確認して、ポートエラーによって引き起こされる問題のデバッグを避けてください。