C#.Net でポートのプロセス ID を決定するプログラムを作成しています。
TcpTable を返す関数GetExtendedTcpTable
があります。IpHlpApi.dll
テーブルを取得した後、行を反復処理してポート番号を解析しています。
ポート番号を比較するために、 を使用して 27144 ポート番号をネットワーク バイト オーダーに変換し、 を使用IPAddress.HostToNetworkOrder
して他のポート番号と比較していMarshal.ReadInt32
ます。比較がうまくいきません。つまり、一致する結果はありません。
を使用する代わりにIPAddress.HostToNetworkOrder
、次のロジックを使用する場合
((27144 & 0xFF) << 8) + ((27144 & 0xFF00) >> 8) == Marshal.ReadInt32(portAddress)
プロセス ID、つまり結果の 1 つが一致するかどうかを判断できます。
なぜ機能しIPAddress.HostToNetworkOrder
ないのか教えてください。