c#中怎么实现监听某个端口经过的所有request和response

  最近有个实现代理方面的需求,需要获得某个端口号下经过的所有流量,包括客户端的请求以及服务端的响应。
在Nodejs中有http组件,可以实现这个功能,创建http.server就可以对请求响应进行监听、截获,在c#中有什么方法可以实现这样的功能呢?
希望对这方面了解的朋友指点一下,谢谢!

阅读 5.9k
2 个回答

这真是个大问题,很难一两句说清楚,贴点关键代码, 给点思路吧

const int DEFPORTNUM = 8097;
int port2use = DEFPORTNUM;
const int BACKLOG = 1000; // maximum length of pending connections queue

Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Loopback;
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port2use);
listener.Bind(localEndPoint);
listener.Listen(BACKLOG);


 while (true)
{
    try
    {
        Socket socket = listener.Accept();
        //Socket socket = tcplistener.AcceptSocket();
        //并获取传送和接收数据的Scoket实例
        if (socket != null)
        {
           //操作这个socket就能满足你的要求了,至于数据解析,又是另外的大问题了
        }
    }
    catch { }
}
新手上路,请多包涵

不理解你是要做服务器还是要做抓包,做服务器用superwebsocket或者其他web服务器,抓包的话用SharpPcap

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进