pcap.net
ライブラリを使用して C#.net で通話録音アプリケーションを開発しています。パケットキャプチャには、Wireshark のDumpcap.exe
. また、パケット ファイルは 5 秒間で作成されます。私がやったことは、各パケットファイルを読み取ることです
OfflinePacketDevice selectedDevice = new OfflinePacketDevice(filename);
using (PacketCommunicator communicator =
selectedDevice.Open(65536, // portion of the packet to capture
// 65536 guarantees that the whole packet will be captured on all the link layers
PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode
0)) // read timeout
{
communicator.ReceivePackets(0, DispatcherHandler);
DispatcherHandlerメソッドでは、各パケットを処理しています。各ファイルのDispatcherHandler呼び出しにかかる時間は 0 秒です。
同じ方法で RTP パケット パケットを処理すると、遅延が発生します。
rtp パケットを特定するために、キーが の順序付き辞書ipadrress+portnumber
を使用しました。したがって、各 rtp パケットが来るたびに、このキーが辞書に存在するかどうかを確認する必要があります。このタスクは、各ダンプ ファイルの処理が遅くなります。
if (objPortIPDict.Contains(ip.Source.ToString().Replace(".", "") + port))
{
// here i write the rtp payload to a file
}