ホームページ バックエンド開発 PHPチュートリアル UDP エラー パッケージの問題_PHP チュートリアル

UDP エラー パッケージの問題_PHP チュートリアル

Jul 14, 2016 am 10:07 AM
array conf udp word コード 見て 質問

質問

以下のコードを見てください
$word = 'こんにちは';
$conf = 配列(
array('ip'=>'10.1.146.133', 'port'=>2001),
配列('ip'=>'10.1.146.133', 'ポート'=>2002)
);
関数 udpGet($word, $ip, $port)
{
$sock =socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>2, 'usec'=>0));
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>2, 'usec'=>0));
socket_sendto($sock, $word, strlen($word), 0x100, $ip, $port);
socket_recvfrom($sock, $result, 8192, 0, $host, $port);
socket_close($sock);
$result を返す;
}
for ($i=0; $i
{
$res = udpGet($word, $conf[$i]['ip'], $conf[$i]['port']);
var_dump($res);
}
UPD を継続的に使用して 2 つのサーバーにデータを送受信することです (問題を説明するために、ここでのサーバーは最も単純なリフレクション ロジックを使用しています)。
すべてが正常に進むと、クライアントは「HELLO」を 2 回受け取ります。しかし、サーバー側で何か問題が発生した場合はどうなるでしょうか?
現在、クライアントのタイムアウトは 2 秒です。ポート 2001 は 3 秒後にデータを送信しますが、ポート 2002 はサービスを提供できないとします。
結果はどうなるか予想しますか? 「NULL が 2 つある!」というのが直感的な答えです。あなたもそう思ったら
おめでとうございます、答えは間違っていました。
実際の答えは次のとおりです:
ヌル
文字列(5) "HELLO"
分析
tcpdumpを使用してパケットをキャプチャし、次の結果を取得します
(133はサーバー、163はクライアント、クライアントphpバージョン5.3.1、Linuxカーネル2.6.16)
12:01:39.014658 IP 10.1.146.163.40678 > 10.1.146.133.2001: UDP、長さ 5
12:01:41.015121 IP 10.1.146.163.40678 > 10.1.146.133.2002: UDP、長さ 5
12:01:42.016103 IP 10.1.146.133.2001 > 10.1.146.163.40678: UDP、長さ 5
私の考えによれば、2 つのリクエストは送信と受信に異なる一時ポートを使用する必要がありますが、パケット キャプチャの結果から判断すると、
クライアントはsocket_createを2回実行しましたが、実際には同じ一時ポート(40678)が使用されました
データを送受信しましょう!これにより、2 番目のリクエストが最初のリクエストからの応答パケットを受信します。
これはシステムのバグとみなすべきだと思われますが、実験の結果、この問題は一部のシステムにのみ存在することが判明しました。
たとえば、Linux カーネル 2.6.32+php5.2.3 にはこの問題はありません。
解決策
送受信の都度ソケットポートを指定します。以下の赤いコードに示されているように。
$sock =ソケット_作成(AF_INET, SOCK_DGRAM, SOL_UDP);
$sendPort = rand(10240, 60000);
socket_bind($sock, ’10.1.146.163’, $sendPort);
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array(‘sec’=>2, ‘usec’=>0));
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array(‘sec’=>2, ‘usec’=>0));
もちろん、ランドポートも衝突する可能性はありますが、結局のところ、確率は低く、問題はかなり解決できます。
より良い解決策があれば、ぜひ共有してください〜
�0�2
�0�2
http://www.bkjia.com/PHPjc/477851.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477851.html技術記事問題は次のとおりです: $word = HELLO; $conf = array(array(ip=10.1.146.133, port=2001), function udpGet($word, $); ip , $port) { $sock = ソケット...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Wordで定規を表示する方法と定規の操作方法を詳しく解説! Wordで定規を表示する方法と定規の操作方法を詳しく解説! Mar 20, 2024 am 10:46 AM

Wordを使っていると、内容をより美しく編集するために定規を使うことが多いです。 Word のルーラーには、文書のページ余白、段落インデント、タブなどを表示および調整するために使用される水平ルーラーと垂直ルーラーが含まれていることを知っておく必要があります。では、Word で定規を表示するにはどうすればよいでしょうか。次にルーラー表示の設定方法を説明します。必要な学生はすぐに集めてください。 1. まず、ワードルーラーを表示します. デフォルトの Word 文書にはワードルーラーが表示されません. Word の [表示] ボタンをクリックするだけです。 2. 次に、[ルーラー]のオプションを見つけてチェックを入れます。このようにしてワードルーラーを調整することができます!はい、もしくは、いいえ

Word文書に手書きの署名を追加する方法 Word文書に手書きの署名を追加する方法 Mar 20, 2024 pm 08:56 PM

Word 文書はその強力な機能により広く使用されており、図や表などさまざまな形式を Word に挿入できるだけでなく、ファイルの完全性と信頼性を確保するために、多くのファイルの最後に手動で署名する必要があります。複雑な問題を解決するにはどうすればよいですか? 今日は、Word 文書に手書きの署名を追加する方法を説明します。スキャナー、カメラ、または携帯電話を使用して手書きの署名をスキャンまたは撮影し、PS またはその他の画像編集ソフトウェアを使用して画像に必要なトリミングを実行します。 2. 手書き署名を挿入したい Word 文書で「挿入 - 画像 - ファイルから」を選択し、切り取られた手書き署名を選択します。 3. 手書き署名の画像をダブルクリック(または画像を右クリックして「画像形式の設定」を選択)すると、「画像形式の設定」がポップアップ表示されます。

Wordの網掛け設定はどこにあるのでしょうか? Wordの網掛け設定はどこにあるのでしょうか? Mar 20, 2024 am 08:16 AM

オフィスワークなどでワードを使うことが多いですが、ワードの網掛けの設定がどこにあるのかご存知ですか?今日は具体的な操作手順を紹介しますので、ぜひ見てください。 1. まず、Word文書を開き、網掛けを追加する必要があるテキスト段落情報の段落を選択し、ツールバーの[開始]ボタンをクリックし、段落領域を見つけて、右側のドロップダウンボタンをクリックします(下図の赤丸で示すように))。 2. ドロップダウン ボックス ボタンをクリックした後、ポップアップ メニュー オプションで [境界線と網掛け] オプションをクリックします (下図の赤丸で示されているように)。 3. [境界線と網かけ]ダイアログボックスが表示されるので、[網かけ]オプションをクリックします(下図の赤丸部分)。 4. 塗りつぶされた列で色を選択します

Wordで表を描く方法 Wordで表を描く方法 Mar 19, 2024 pm 11:50 PM

Word は非常に強力なオフィスソフトであり、WPS に比べて詳細な処理に優れており、特に文書の記述が複雑な場合には Word を使用した方が一般的には安心です。そのため、社会に出たらワードの使い方のコツを学ばなければなりません。以前、いとこからこんな質問をされましたが、Wordを使っていると他の人が表を描いているのをよく見かけますが、とてもレベルの高いものを感じます。高度な内容に見えましたが、実際に操作するのはたったの3ステップでした Wordで表を描く方法をご存知ですか? 1. Word を開き、表を挿入する場所を選択し、上部のメニュー バーにある [挿入] オプションを見つけます。 2. 「テーブル」オプションをクリックすると、密集した小さな立方体が表示されます。

Wordの表を合計する方法を知っていますか? Wordの表を合計する方法を知っていますか? Mar 21, 2024 pm 01:10 PM

Word の表で数を数えるという問題に遭遇することがあります。通常、このような問題に遭遇すると、ほとんどの生徒は Word の表を Excel にコピーして計算しますが、黙って電卓を手に取る生徒もいます。簡単に計算する方法はありますか?もちろんありますが、実はWordでも合計額を計算することができます。それで、その方法を知っていますか?今日は、一緒に見ていきましょう!困っている友達はすぐに集めてください。手順の詳細: 1. まず、コンピューターで Word ソフトウェアを開き、処理する必要がある文書を開きます。 (図のように) 2. 次に、(図のように) 合計値が配置されているセルにカーソルを置き、[メニュー バー] をクリックします。

Wordで下線を引く方法 Wordで下線を引く方法 Mar 19, 2024 pm 10:49 PM

卒業論文や履歴書の表紙を作るときに、表紙に性別、年齢、階級などを書き、その後ろに線を引いて自分の情報を書きますが、名前に下線を引くという問題があります。 Word で下線を引く方法について誰もが尋ねていることを以下に具体的な手順で説明します。まず、パソコンで文書を開き、Word の上部ツールバーにある [スタート] ボタンをクリックし、下図の赤丸で示す [U] の下にある下線付きのアイコン ボタンをクリックします。 2. 次に、下線を引きたい位置にカーソルを置き、キーボードのスペースキーを押します。このとき、下線が表示されます。下線の長さは、スペースの数に応じて制御できます。下図の赤丸部分

Wordで下線を引く方法 Wordで下線を引く方法 Mar 20, 2024 pm 03:16 PM

Word は非常に一般的に使用されているワープロ ソフトウェアとして、私たちの生活、勉強、仕事で常に使用されています。もちろん、Word を有効に活用してテキストを編集するには、適切な基礎を築く必要があります。そこで今日は、Word で下線を引く方法をご紹介します。エディターを使用して行うことができます。非常に簡単です。 1. まず、次の図を例として、編集する必要があるファイルを開きます。 2. マウスを使用して編集するテキストを選択し、ポップアップ タブで [U] アイコンを選択します。操作は図に示すとおりです: 3. 効果を見てみましょう: 4.実際、より便利で高速な方法を使用できます。その方法は、キーボードの [ctrl] + [U] キーの組み合わせを使用して、テキストを追加して追跡することです。

ワードの連番を自動で並び替える方法 ワードの連番を自動で並び替える方法 Mar 20, 2024 pm 09:20 PM

ワードの内容が多いと章が多くなり、一章ずつ書くのは不可能ですが、ワードの通し番号を利用して自動でソートすることができ、操作が簡単で便利です。操作方法がわからない友達は、ぜひ学びに来てください。 1. まず、下図に示すように、コンピュータ上で処理する文書を開きます: 2. 文書を開いた後、自動並べ替えが必要なテキストを選択します。この例では、[第 1 章] と [ [第 2 章] を選択し、Ctrl キーを押しながら複数の領域を選択するには、下図の赤丸で示されているように、マウスを使用して Word の [スタート] メニューをクリックします。 [段落]ツールバーの数字の右にある をクリックし、ポップアップメニューの をクリックして選択する連番の種類は、以下の赤矢印のとおりです。

See all articles