我使用 System.Net.HttpListener 和 C#(Windows 7+,.Net 4.0)编写了一个代理服务器。我想确定哪个进程正在发送请求(发件人保证在同一台机器上)。
好老的@EricLaw 有一些几乎可以工作的东西,http://blogs.msdn.com/b/fiddler/archive/2013/01/09/10138573.aspx但是......只有当我从端口中减去 1 时:
HttpListenerContext context = GetContext();
HttpListenerRequest request = context.Request;
int pid = 0;
if (request.IsLocal)
{
int port = context.Request.RemoteEndPoint.Port;
pid = Winsock.MapLocalPortToProcessId(port - 1)
}
return pid;
如果我不减去 1,则请求来自 PID=4,即系统进程。
减法是我应该做的事情吗?还是有不同的方法来确定哪个进程发送了请求?