この記事の例は、php でのソケットの使用法を詳細に説明しており、参考のために皆さんと共有されています。具体的な使い方は以下の通りです
1. ソケットを開きます
phpinfo(); ソケット拡張機能が有効かどうかを確認し、そうでない場合は php.ini で有効にします。
2. サーバーサイドコードの書き方
$アドレス = '127.0.0.1';
$ポート = 10005;
//ポートを作成します
if( ($sock =socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() が失敗しました:reason:" 。socket_strerror(socket_last_error()) "n";
}
//バインディング
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() が失敗しました:reason:" 。socket_strerror(socket_last_error($sock)) "n";
}
//モニター
if (socket_listen($sock, 5) === false) {
echo "socket_bind() が失敗しました:reason:" 。socket_strerror(socket_last_error($sock)) "n";
}
する{
//リンクを取得します
if (($msgsock =ソケット_accept($sock)) === false) {
echo "socket_accepty() が失敗しました :reason:".socket_strerror(socket_last_error($sock)) "n";
休憩;
}
//クライアントにようこそ送信されました
$msg = "サーバー送信:ようこそ
";
socket_write($msgsock, $msg, strlen($msg));
echo 'クライアントメッセージを読む';
$buf =ソケット_読み取り($msgsock, 8192);
$talkback = "受信メッセージ:$bufn";
エコー $talkback;
if (false ===socket_write($msgsock, $talkback, strlen($talkback))) {
echo "socket_write() が失敗した理由:" .socket_strerror(socket_last_error($sock)) ."n";
} その他 {
echo '送信成功';
}
ソケットクローズ($msgsock);
while(true);
//ソケットを閉じる
ソケットクローズ($sock);
?>
サーバーは cli モードで実行する必要があります。cli モードでは php.ini ファイルが異なる方法でロードされる可能性があります。
次のように出力できます:
現時点では、zhoxh ディレクトリに tem.text ファイルがあります。構成ファイル (php.ini) のパス => C:WINDOWS を確認します。これは私の php.ini ファイルではありません。つまり、呼び出された php.ini ファイルが間違っています。このとき、php.iniファイルのコマンドを次のように指定する必要があります
私のphpは環境変数が設定された状態で直接実行できることに注意してください。
3. クライアント
if ($socket === false) {
echo "socket_create() が失敗しました: 理由: " 。socket_strerror(socket_last_error()) 。
} その他 {
echo "OK.n";
}
echo "ポート '$service_port' の '$address' に接続しようとしています...";
if($result === false) {
echo "socket_connect() が失敗しました。nReason: ($result) " 。socket_strerror(socket_last_error($socket)) "n";
} その他 {
「OK n」をエコーします;
}
$in = "HEAD/http/1.1rn";
$in .= "ホスト: ローカルホスト rn";
$in .= "接続: より近いnrn";
$out = "";
echo "http ヘッド リクエストを送信しています ...";
socket_write($socket, $in, strlen($in));
「OKn」をエコーします;
echo "応答を読み取っています:nn";
エコー $out;
}
echo "ソケットを閉じています..";
ソケットクローズ($ソケット);
エコー「わかりました。nn」;
クライアント:
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。