[英]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端点。
因此,唯一的挑战是如何获得PropertyInfo
为ServicePoint.NetworkStream
,得到其数值为特定HttpWebRequest
实例,并从那里它是一条直线。
注意:要获得正确的解决方案,您可能需要查看Windows HTTP服务 ,然后围绕它创建一个托管包装器(如果已经没有)。
请享用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.