専門家の皆さん、php のソケットに関する問題について教えてください。
専門家の皆さん、php のソケットの問題について教えてください。
ハードウェアがサーバー ポートにデータを送信し (パケット キャプチャ ソフトウェアは正しい 16 進数を取得します)、パケット キャプチャ ソフトウェアによってキャプチャされたデータは正常です (16 進数)。 ) ) ただし、php ソケットを介して受信したデータ (変換後も 16 進数であり、変換しないと文字化けします)、コードを以下に貼り付けます。専門家が問題を見つけるのを手伝ってください。 PHP ソケットで取得したデータとパケット キャプチャ ソフトウェアで取得したデータが異なるのはなぜですか?
パケット キャプチャ ソフトウェアで取得した正しいコードは (16 進数): FA 01 01 FF AA 03 00 01 00 0B 00 00 00 A3
php ソケットを通じて取得されたデータ (dechex()、ord() を通じて変換され、ソフトウェアがキャプチャしたものとは異なり、間違っています): fa 7 25 2 fa 2 0 9 f6 4 2c 88 fa 1
以下の PHP ソケット コードを貼り付けます:
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php エラー報告(E_ALL); set_time_limit(0); ini_set("allow_call_time_pass_reference",true); // リスニングポート $ポート = 8888; //最大接続プール $MAX_USERS = 50000; //リスニングポートを作成 //$sock = ソケット作成_リッスン($PORT); $commonProtocol = getprotobyname("tcp"); $sock =socket_create(AF_INET, SOCK_STREAM, $commonProtocol); @socket_bind($sock, '192.168.1.101', 8888); @socket_listen($sock); if (!$靴下) { 終了(1); } //ブロックしないでください ソケットセット_ノンブロック($sock); $connections = array(); $input = 配列(); $close = 配列(); その間(真) { //スリープ(3); $readfds = array_merge($connections, array($sock)); $writefds = 配列(); //接続を選択し、読み取りおよび書き込み接続チャネルを取得します if (socket_select($readfds, $writefds, $e = null, $t=60)) { foreach ($readfds を $rfd として) { // 現在のサーバーのリスニング接続の場合 if ($rfd == $sock) { //クライアント接続を受け入れる $newconn = ソケット受け入れ($sock); $i = (int)$newconn; $reject = ''; if (count($connections) >= $MAX_USERS) { $reject = "サーバーがいっぱいです。後でもう一度お試しください。n"; } //現在のクライアント接続をsocket_select選択として配置します $connections[$i] = $newconn; //入力接続リソースキャッシュコンテナ $writefds[$i] = $newconn; //接続が異常です if($拒否) { $close[$i] = true; } それ以外 { echo "PHP チャット サーバーへようこそ!n"; } //現在の接続からコンテンツを読み取るためにキャッシュ コンテナを初期化します $input[$i] = ""; 続く; } //クライアント接続 $i = (int)$rfd; //読む $tmp = @socket_read($rfd, 14, PHP_NORMAL_READ); if (!$tmp) { //コンテンツを読み取れません print "ソケット $in で接続が閉じられました"; 閉じる($i); 続く; } $input[$i] .= $tmp; $tmp = substr($input[$i], -1); /*if ($tmp != "r" && $tmp != "n") { // 行末がないため、さらにデータが来ます 続く; }*/ $line = トリム($input[$i]); $input[$i] = ""; echo 'クライアント >>'.$line."rn"; $data=str_split($line); print_r($data); 「rn」をエコーします。 //$data =explode("t",$line); //$data=str_split($data); foreach($data as $v){ echo dechex(ord($v))."t"; } 「rn」をエコーします。 ソケット_getpeername($connections[$i],&$remoteIP,&$remotePort); echo $remoteIP."rn"; echo $remotePort."rn"; //$data=str_split($buffer); //print_r($data); $str="xFAx01x01xFFxAAxAAx00x01x00x00x00x00x00x01"; ソケット送信($connections[$i],$str,strlen($str),0); } foreach ($writefds を $wfd) { $i = (int)$wfd; $w = ソケット書き込み($wfd, "こんにちは"); } } } 関数クローズ($i) { グローバル $connections、$input、$close; ソケットシャットダウン($connections[$i]); ソケットクローズ($connections[$i]); unset($connections[$i]); unset($input[$i]); unset($close[$i]); } ?> <div class="clear"></div>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、php+socket に関する関連知識を提供します。主に IO 多重化と php+socket が Web サーバーを実装する方法を紹介します。興味のある方は以下をご覧ください。皆様のお役に立てれば幸いです。

1. TCP プロトコルに基づくソケット プログラミング 1. ソケット ワークフローはサーバー側から始まります。サーバーはまずソケットを初期化し、次にポートにバインドし、ポートをリッスンし、accept を呼び出してブロックし、クライアントが接続するのを待ちます。このとき、クライアントがSocketを初期化してからサーバーに接続(connect)すると、接続に成功するとクライアントとサーバー間の接続が確立されます。クライアントがデータ リクエストを送信し、サーバーがリクエストを受信して処理し、次に応答データをクライアントに送信し、クライアントがデータを読み取り、最後に接続を閉じます。インタラクションは終了します。インタラクションを実装するには、次の Python コードを使用します。 :インポートソ

準備 vuecreateexample を使用してプロジェクトを作成します パラメーターは大まかに以下のとおりです ネイティブ入力を使用します ネイティブ入力は主に値と変更です 変更する場合はデータを同期する必要がありますApp.tsx は次のとおりです: import{ref}from'vue';exportdefault{setup(){//username はデータです constusername=ref('Zhang San');//入力ボックスが変更されると、データを同期します constonInput =;return( )=>({

SpringBoot 側の最初のステップは依存関係を導入することです。まず、WebSocket に必要な依存関係と、出力形式 com.alibabafastjson1.2.73org.springframework.bootspring-boot-starter-websocket を処理するための依存関係を導入する必要があります。 2 番目のステップは、WebSocket 構成クラス importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Config を作成することです。

php ソケットに接続できない問題の解決策: 1. php でソケット拡張機能が有効になっているかどうかを確認します; 2. php.ini ファイルを開いて、「php_sockets.dll」が読み込まれているかどうかを確認します; 3. 「php_sockets.dll」のコメントを解除します」。

laravel入力の隠しフィールドを実装する方法: 1. Bladeテンプレートファイルを見つけて開きます; 2. Bladeテンプレートのmethod_fieldメソッドを使用して隠しフィールドを作成します。作成構文は「{{ method_field('DELETE') }}」です。 」。

インターネットの発展に伴い、ファイル転送は人々の日常の仕事や娯楽に不可欠な部分になりました。ただし、電子メールの添付ファイルやファイル共有 Web サイトなどの従来のファイル転送方法には一定の制限があり、リアルタイム性とセキュリティのニーズを満たすことができません。したがって、PHP と Socket テクノロジを使用してリアルタイムのファイル転送を実現することが新しいソリューションになりました。この記事では、PHP と Socket テクノロジを使用してリアルタイム ファイル転送を実現する技術原理、利点、アプリケーション シナリオを紹介し、具体的なケースを通じてこのテクノロジの実装方法を示します。テクノロジー

C# におけるネットワーク通信とセキュリティの一般的な問題と解決策 今日のインターネット時代では、ネットワーク通信はソフトウェア開発に不可欠な部分となっています。 C# では通常、データ送信のセキュリティ、ネットワーク接続の安定性など、ネットワーク通信の問題が発生します。この記事では、C# における一般的なネットワーク通信とセキュリティの問題について詳しく説明し、対応する解決策とコード例を提供します。 1. ネットワーク通信の問題 ネットワーク接続の中断: ネットワーク通信プロセス中に、ネットワーク接続が中断される場合があります。
