ホームページ  >  記事  >  バックエンド開発  >  UDPチェックサムの計算方法

UDPチェックサムの計算方法

WBOY
WBOYオリジナル
2016-06-23 14:15:422246ブラウズ

UDP のチェックサムを見つけるにはどうすればよいですか? 私の IP は 192.168.1.59 で、ポート番号は 30002 です
接続されているマシンは 192.168.1.179 で、ポート番号は 30000 です

次に、チェックサムを見つける方法


ディスカッションに返信(解決済み)

ぐ~~(???)b 分かりません

チェクサムの取得方法とバイト長が必要ですか?やはりバイト長が必要なのでしょうか?バイト長が 66 の場合、このチェックサムを取得するにはどうすればよいでしょうか?

これは通常、システムレベルまたはネットワークカード上で行われますが、PHP で行うのは難しいですか?

そうですね、PHP にはこれに関する多くの機能はなく、チェックサムと送信されたデータはすべて加算され、XOR されてから合計されます。 。何。でもどれを追加すればいいのか分からない?

C 言語のコードを見つけて移植するだけです

C 言語のコードを見つけて移植するだけです
例はありますか?重要な点は、php の 16 進数を XOR して合計する前に、まず 2 進数に変換する必要があるということです。

関連する関数はすべて PHP が提供します
分からない部分は投稿してください

$FileData=array();

///8 バイトのヘッダー
$FileData[0]=0x75;
$FileData[ 1]= 0x30;
$FileData[2]=0x32;
$FileData[5]=0x20;チェックサム


$a=$FileData[0]*256+$FileData[1]
$b=$FileData[2]*256+$FileData[3];
$c =$FileData[4]; *256+$FileData[5];
$d=($a+$b+$c);
$FileData[6]=~(($d>>8)&0xFF); ~($d&0xFF);
//----------

///16バイトデータ
//識別番号:01020304
$FileData[ 8]=0x01;
$FileData[10]=0x03;

//操作コマンド: 0x00000001
$FileData[12]=0x00; $FileData[13]=0x00;
$FileData[15]=0x02;

//演算結果: 0x00000000
$FileData[17]= 0x00;
$FileData[19]=0x01;
$FileData[20]=0x00;
$FileData[22]= 0x00;
$FileData[23]=0x00;

//----------
///8 バイト修正チェックサム
$FileData[24 ]=$FileData[0]^$FileData[8]^$FileData[16];
$FileData[25]=$FileData[1]^$FileData[9]^$FileData[17 ]; ]=$FileData[2]^$FileData[10]^$FileData[18];
$FileData[27]=$FileData[3]^$FileData[11]^$FileData[19 ]; ]=$FileData[4]^$FileData[12]^$FileData[20];
$FileData[29]=$FileData[5]^$FileData[13]^$FileData[21 ]; ]=$FileData[6]^$FileData[14]^$FileData[22];
$FileData[31]=$FileData[7]^$FileData[23 ]; sizeof( $FileData );
foreach($FileData as $arr)
{
$str.= $arr;

echo $str; //$str のデータ
UDP メッセージ
識別番号 操作コマンド 操作データ (結果) 予約済み
4 バイト 4 バイト 4 バイト 4 バイト


だから今、私はそのチェックサムを取得したいだけです

私は上記です 書き込まれたチェックサムは間違っており、出力データも間違っています

PHP は関連する関数をすべて提供しています
分からない部分は投稿してください

IP を 16 進数に変換するにはどうすればよいですか?私もやり方が分かりません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。