Socket の本来の英語の意味は「穴」または「ソケット」です。 BSD UNIX のプロセス通信機構としては後者の意味をとります。一般に「ソケット」とも呼ばれ、IP アドレスとポートを記述するために使用され、通信チェーンへのハンドルであり、異なる仮想マシンまたは異なるコンピューター間の通信を実装するために使用できます。インターネット上のホストは通常、複数のサービス ソフトウェアを実行し、複数のサービスを同時に提供します。各サービスはソケットを開き、異なるポートに異なるサービスに対応します。ソケットとは英語の本来の意味そのままで、多穴ソケットのようなものです。ホストは、さまざまなソケットがたくさんある部屋のようなものです。各ソケットには 220 ボルトの AC 電力が供給されるものや、110 ボルトの AC 電力が供給されるもの、ケーブル テレビ番組が提供されるものがあります。 クライアント ソフトウェアは、異なる番号のソケットにプラグを接続して、異なるサービスを利用します。この記事では主に PHP でのソケットの使用法を紹介し、PHP でのソケット通信の完全な手順を詳しく説明します。必要な方は参考にしてください。具体的な使用法は次のとおりです。 1. ソケットを開きます
phpinfo(); ソケット拡張機能が有効かどうかを確認し、そうでない場合は php.ini で有効にします。
コードは次のとおりです:<?php error_reporting(E_ALL); set_time_limit(0); //ob_implicit_flush(); $address = '127.0.0.1'; $port = 10005; //创建端口 if( ($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { echo "socket_create() failed :reason:" . socket_strerror(socket_last_error()) . "\n"; } //绑定 if (socket_bind($sock, $address, $port) === false) { echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n"; } //监听 if (socket_listen($sock, 5) === false) { echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n"; } do { //得到一个链接 if (($msgsock = socket_accept($sock)) === false) { echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n"; break; } //welcome 发送到客户端 $msg = "<font color='red'>server send:welcome</font><br/>"; socket_write($msgsock, $msg, strlen($msg)); echo 'read client message\n'; $buf = socket_read($msgsock, 8192); $talkback = "received message:$buf\n"; echo $talkback; if (false === socket_write($msgsock, $talkback, strlen($talkback))) { echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n"; } else { echo 'send success'; } socket_close($msgsock); } while(true); //关闭socket socket_close($sock); ?>
この時点で、zhoxh ディレクトリに tem.text ファイルがあります。構成ファイル (php.ini) パス => C:WINDOWS を表示します。これは私の php.ini ファイルではありません。つまり、呼び出された php.ini ファイルが間違っています。このとき、php.ini ファイルのコマンドを次のように指定する必要があります
私の php は環境変数が設定された状態で直接実行できることに注意してください。
3. クライアント
コードは次のとおりです:
<?php //error_reporting(E_ALL); echo "<h2>tcp/ip connection </h2>\n"; $service_port = 10005; $address = '127.0.0.1'; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } else { echo "OK. \n"; } echo "Attempting to connect to '$address' on port '$service_port'..."; $result = socket_connect($socket, $address, $service_port); if($result === false) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; } else { echo "OK \n"; } $in = "HEAD / http/1.1\r\n"; $in .= "HOST: localhost \r\n"; $in .= "Connection: close\r\n\r\n"; $out = ""; echo "sending http head request ..."; socket_write($socket, $in, strlen($in)); echo "OK\n"; echo "Reading response:\n\n"; while ($out = socket_read($socket, 8192)) { echo $out; } echo "closeing socket.."; socket_close($socket); echo "ok .\n\n";
実行結果は次のとおりです: server:
client:
以上がPHPでのsocketの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。