我想实现类似于Fiddler的功能。实现一个80端口监听器
我曾尝试2个解决方案:
HttpListener
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://*:80/");
listener.Start();
当start()被执行我得到的错误System.Net.HttpListenerException“该进程无法访问该文件,因为它正在使用另一个进程“,这意味着有一些其他应用程序在端口80上侦听IIS或其他任何应用程序。
套接字
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 80);
// Create a TCP/IP socket.
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Bind the socket to the local endpoint and listen for incoming connections.
try
{
listener.Bind(localEndPoint);
// ..... 当执行listener.Bind()我得到System.Net.Sockets.SocketException(0X80004005):每个套接字地址只能有一个使用(协议/网络地址/端口)通常允许至极意味着同样的事情,已经有另一个应用程序侦听端口80
那么,如何提琴手侦听端口80没有这些问题呢? 我宁愿使用像HttpListener这样的类,因为它是更高级别的,而不是象套接字这样的低级别类,我必须实现HTTP协议。
你说得对。我为传入连接编写代码。我想编写像Fiddler这样的传出连接的代码。你能给我一个线索怎么做吗? –
关于如何在这个SO线程中创建一个代理的一些很好的信息,这应该让你开始:http://stackoverflow.com/questions/226784/how-to-create-a-simple-proxy-in-c – BrokenGlass