Основной вопрос: может ли приложение c # отслеживать момент, когда пользователь начинает загружать файл со своего локального компьютера в Интернет?Это может быть любой процесс на машине.Приложение отслеживания не запускает процесс загрузки файла.
Существует пример кода, который захватывает так много исходящего трафика TCP и UDP.Но мне нужно фильтровать только пакеты, содержащие данные для передачи файлов.
public static void Start()
{
//get ip address
IPAddress[] addrList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
string IP = addrList[0].ToString();
//var devices = SharpPcap.WinPcap.WinPcapDeviceList.Instance;
var devices = CaptureDeviceList.Instance;
// differentiate based upon types
int count = devices.Count;
if (count < 1)
{
Console.WriteLine("No device found on this machine");
return;
}
for (int i = 0; i < count; ++i)
{
// CaptureFlowReceive(IP, i);
CaptureFlowSend(IP,i);
}
while (true)
{
//Call refresh function every 1s
RefershInfo();
}
}
private static void CaptureFlowSend(string IP, int deviceID)
{
ICaptureDevice device = CaptureDeviceList.New()[deviceID];
device.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrivalSend);
int readTimeoutMilliseconds = 1000;
device.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds);
string filter = "src host " + IP + " and ip ";
device.Filter = filter;
device.StartCapture();
}
private static void device_OnPacketArrivalSend(object sender, CaptureEventArgs e)
{
var rawCapture = e.Packet;
var packet = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data);
var data = packet.PayloadPacket.PayloadPacket.PayloadData;
}
public static void RefershInfo()
{
Thread.Sleep(1000);
}