我如何获得一个HttpWebRequest的的本地端口号?(How do I get the loc

2019-09-18 13:29发布

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

我已经看了HttpWebRequest.ServicePoint.BindIPEndPointDelegate,但这似乎只是允许呼叫者指定本地阿迪/端口。 理想情况下,我想,让HttpWebRequest的正常挑它的本地端口,然后问它是什么选择。

Answer 1:

不幸的是, HttpWebRequest类确实没有揭露你所要求的东西。

我不建议我将在下面说,在生产中使用。 这只是程序员的乐趣

ServicePoint类有一个私人NetworkStream称为成员m_NetworkStream ,通过内部属性暴露NetworkStream

正如你可能已经知道, NetworkStream已经暴露了公共Socket ,让你潜在的插座,从中可以访问本地IP端点属性。

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

注意:对于一个妥善的解决办法,你可能想看看Windows HTTP服务 ,然后也许创建它周围的托管包装(如果没有的话)。

请享用!



文章来源: How do I get the local port number of an HttpWebRequest?