首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将端口号转换为网络字节顺序?

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

Stack Overflow用户
提问于 2013-02-15 14:54:53
回答 1查看 1.4K关注 0票数 0

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

IpHlpApi.dll中有一个函数GetExtendedTcpTable,它返回TcpTable。在获得表之后,我遍历各行并解析端口号。

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

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

代码语言:javascript
复制
((27144 & 0xFF) << 8) + ((27144 & 0xFF00) >> 8) == Marshal.ReadInt32(portAddress)

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-15 15:04:18

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14889642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档