この記事では主に PHP でのソケットの使用法を紹介し、PHP でのソケット通信の完全な手順を詳しく説明します。必要な友人は参考にしてください。この記事の例では、PHP でのソケットの使用法について説明します。 PHPの詳細については、参考までに共有してください。具体的な使用方法は次のとおりです:
1. ソケットを開きますphpinfo
(); ソケット拡張機能が有効かどうかを確認し、そうでない場合は php.ini で有効にします。
2. サーバー側のコードの書き方コードは次のとおりです:
<?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); ?>
サーバー側は cli モードで実行する必要があります。php.ini ファイルが異なる方法でロードされる可能性があります。 cli モード
次のように出力できます:
この時点で、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 サイトの他の関連記事を参照してください。