0

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

有一个函数可以返回 TcpTable GetExtendedTcpTableIpHlpApi.dll获得表格后,我正在遍历行并解析端口号。

现在为了比较端口号,我将 27144 端口号转换为网络字节顺序,IPAddress.HostToNetworkOrder并使用Marshal.ReadInt32. 比较不起作用。即没有结果匹配。

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

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

我能够确定进程 ID,即结果匹配之一。

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

4

1 回答 1

2

您可能在TcpRowDWORD中使用了from dwLocalPort/ 。DWORD 肯定不会是 16 位的,您可能会调用 32 位版本的IPAddress.HostToNetworkOrder ...您应该在使用该函数之前尝试将其转换为一个。dwRemotePortInt16IPAddress.HostToNetworkOrder

于 2013-02-15T07:04:17.740 回答