2011-01-25 12 views
-1

私はIGMPパケットを含む1つのIPパケットを持っています。私は、RAWソケットプログラミングを使用してこれをシミュレートしたいです。 IPパケットのチェックサムフィールドはe1c9です。ここではこの値をプログラミングに割り当てる方法を示します。試しました iphdr-> iph_chksum = "e1c9";Rawソケットを使用してIP、IGMPパケットを作成している間に、それらのパケットの16進値をどのようにフィリングしますか?

iphdr-> iph_chksum = 57801;

は上記のものですか?

正しく動作しません。正確な方法を教えてください。予め

おかげ.......進値に対する

:)
+0

57801はe1c9の16進値です –

+0

何が正しく動作しないのですか?私たちが助けることができるように、より多くのコードを与えてください。 – Peyman

+0

struct ipheader * iphdr =(struct ipheader *)バッファ; iphdr-> iph_ver = 70; //ある所与46(16進値) iphdr-> iph_tos = 192; //」C0 iphdr-> iph_len = 52; //ヘキサ値given34 iphdr-> iph_ident = 0; iphdr-> iph_flagoffset = 64; //ヘクス4000を所与 iphdr-> iph_ttl = 1; iphdr-> iph_protocol = 2; iphdr-> iph_chksum = "e1c9"; iphdr-> iph_sourceip = htons( iphdr-> iph_destip = htons(atoi(argv [2])); iphdr-> option1 = "9404"; iphdr-> option2 = 0; 同様の出力が必要です私は何を与えられている..私を案内してください。 –

答えて

0

C構文は、この場合に0xe1c9あります。あなたは正しいバイトオーダーを使用していることを確認する必要があります。htons

+0

それはそうしようとするでしょうiphdr-> iph_chk和= 0xe1c9; ??またはiphdr-> iph_chksum = "0xe1c9"; –

+0

@ user572341: 'iphdr-> iph_chksum = htons(0xe1c9);' – Hasturkun

+0

これはうまくいきます... –

関連する問題