繁体   English   中英

如何获取HttpWebRequest的本地端口号?

[英]How do I get the local port number of an HttpWebRequest?

我正在异步地使用HttpWebRequest进行长时间运行的请求。 请求正在运行时,我希望能够获取请求的本地端口(即客户端上的端口,而不是服务器端口)。 我怎么做?

我查看了HttpWebRequest.ServicePoint.BindIPEndPointDelegate,但这似乎只允许调用者指定本地addy / port。 理想情况下,我想允许HttpWebRequest正常选择其本地端口,然后询问它选择了什么。

不幸的是, HttpWebRequest类确实没有公开你要求的东西。

我不推荐下面我要说的用于生产。 只是程序员的乐趣

ServicePoint类有一个名为m_NetworkStream的专用NetworkStream成员,通过内部属性NetworkStream公开。

您可能已经知道, NetworkStream已经公开了一个公共Socket属性,该属性为您提供了底层套接字,您可以从中访问本地IP端点。

因此,唯一的挑战是如何获得PropertyInfoServicePoint.NetworkStream ,得到其数值为特定HttpWebRequest实例,并从那里它是一条直线。

注意:要获得正确的解决方案,您可能需要查看Windows HTTP服务 ,然后围绕它创建一个托管包装器(如果已经没有)。

请享用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM