监控某个程序的tcp/udp数据包,如何编程实现

监控某个程序的tcp/udp数据包,怎么编程实现?
如题,希望有参考例子。

------解决方案--------------------
参考sniffer源码
------解决方案--------------------
用SPI等等
------解决方案--------------------
比较简单的可以用SetWindowsHookEx()
------解决方案--------------------
采用hook方式挂钩子