Packet sniffers usually tie in with drivers, which will cause you problems.
You could see if any available packet sniffers like pcap offer a good API for grabbing their results with (shared memory, for example) and marshalling those.
Alternatively you could make a server and client in one application. The client of whatever you want to sniff connects to the server you made, which then forwards it on to the real server and back again for the reply. This only really works if you can tell the client of whatever you are sniffing to connect to the local machine and then get your application to connect to the real server but between receiving the data from one end and sending it to the other, you can do whatever you want to the packets (analyse them in a new thread, edit them or whatever).