2017-05-08 11 views
1

htonsを使用してネットワークバイトに変換する前に、ソケット(C++クライアント)よりもポート番号(ushort、2バイト)を送信しています。C#でushortのポート番号をhtonsからntohsに変換するのはなぜですか?

C#サーバーを使用して受信した場合は、IPAddress.NetworkToHostOrderを使用して変換していますが、番号はまったく異なります。

htons(8085) -> 38175 ?? 
IPAddress.NetworkToHostOrder(38175) -> ?? 

原因は何ですか。

答えて

5

各機能に別々の名前があるBSDソケットAPIと異なり、NetworkToHostOrderメソッドはオーバーロードされており、入力のサイズによってはntohsまたはntohlのいずれかを実行する可能性があります。

あなたは(C#はそれが収まらない場合を除きリテラルを見たときintは、デフォルトのタイプである)32ビット整数入力を渡しているので、あなたはntohlないntohsと同じ結果を得ることができます。

ntohsの動作が必要な場合は、入力タイプを変更します。

IPAddress.NetworkToHostOrder((short)38175) 
+0

ありがとうございました。 :) –

関連する問題