如何将端口号转换为网络字节顺序

本文关键字:转换 网络字节顺序 口号 | 更新日期: 2023-09-27 17:59:42

我正在编写一个程序,该程序将确定C#.Net.中端口的进程id

在CCD_ 2中有一个函数GetExtendedTcpTable,它返回TcpTable。在得到表之后,我将遍历这些行并解析端口号。

现在,为了比较端口号,我使用IPAddress.HostToNetworkOrder将27144端口号转换为网络字节顺序,并使用Marshal.ReadInt32与其他端口号进行比较。这种比较不起作用。即无结果匹配。

如果不使用IPAddress.HostToNetworkOrder,而是使用以下逻辑

((27144 & 0xFF) << 8) + ((27144 & 0xFF00) >> 8) == Marshal.ReadInt32(portAddress)

我能够确定进程id,即其中一个结果匹配。

你能告诉我为什么IPAddress.HostToNetworkOrder不工作吗?

如何将端口号转换为网络字节顺序

您可能正在TcpRow中使用dwLocalPort/dwRemotePort中的DWORD。DWORD肯定不是16位,您可能会调用32位版本的IPAddress.HostToNetworkOrder…在使用IPAddress.HostToNetworkOrder函数之前,您应该尝试将其强制转换为Int16