用c 監控網路流量

2021-04-07 01:39:51 字數 3270 閱讀 9677

以下的**的原作是opensource的乙個叫sniffer.net的,用vb.net寫的,這裡只是簡單的用c#翻譯了一下,暫時還只能監控所有資料報,不能監控某乙個程序的資料報,**如下:

using system;

using system.text;

using system.net;

using system.net.sockets;

using system.runtime.interopservices;

namespace updatetester

}public byte buffer

}public monitor()

public monitor(ipaddress ipaddress)

m_ip = ipaddress;

} public void start()

catch (exception e)}}

public void stop()

m_monitor = null;

}public void onreceive(system.iasyncresult ar)

}catch(exception e)

m_monitor.beginreceive(buffer, 0, buffer.length, socketflags.none, new asynccallback(onreceive), null);

}catch (exception e)

}protected void onnewpacket(packet p)}}

using system;

using system.text;

using system.net;

using system.net.sockets;

namespace updatetester

public enum delay

public enum throughput

public enum reliability

public enum protocol

/**

/// packet 的摘要說明。

///

public class packet

////  public packet(byte raw):(byte raw, datetime time)

// 

public packet(byte raw, datetime time)

if (raw.length<20)

this.m_raw = raw;

this.m_time = time;

this.m_headerlength = (raw[0] & 0xf) * 4;

if ((raw[0] & 0xf) < 5)

this.m_precedence = (precedence)((raw[1] & 0xe0) >> 5);

this.m_delay = (delay)((raw[1] & 0x10) >> 4);

this.m_throughput = (throughput)((raw[1] & 0x8) >> 3);

this.m_reliability = (reliability)((raw[1] & 0x4) >> 2);

this.m_totallength = raw[2] * 256 + raw[3];

if ( ! (this.m_totallength == raw.length)) // invalid size of packet;

this.m_identification = raw[4] * 256 + raw[5];

this.m_timetolive = raw[8];

m_protocol = (protocol)raw[9];

m_checksum = new byte[2];

m_checksum[0] = raw[11];

m_checksum[1] = raw[10];

trycatch (exception e)

if (m_protocol == protocol.tcp || m_protocol == protocol.udp)

else

}public string getipaddress(byte barray, int nstart)

return tmp[0] + "." + tmp[1] + "." + tmp[2] + "." + tmp[3];

}public int totallength

}public datetime time

}public protocol protocol

}public string sourceaddress

}public string source

else } }

public string destination

else }}

public string destinationaddress}}

}在主程式裡

private monitor m_packetmonitors;

private arraylist m_packets;

private system.windows.forms.statusbar statusbar1;

private int m_packetssize;

執行方法中

private void startmonitor()

for (int i=0; im_packetmonitors = new monitor[1];

m_packets = new arraylist();

m_packetmonitors[0] = new monitor(hosts[0]);

// 新增**,每次有新的packet到時都出發下面哪個動作

m_packetmonitors[0].newpacket+=new monitor.newpacketeventhandler(this.onnewpacket);

m_packetmonitors[0].start();

}// 這個方法用於把packet顯示到乙個地方

private void onnewpacket(monitor m, packet p)

catch (exception e)

statusbar1.text = string.format("intercepted packet(s) [ bytes]", m_packets.count, m_packetssize);

}

網路流量監控

1.網路流量監控有什麼用?網路流量監控可以用來分析網路 2.網路流量監控技術有哪些?映象技術 sflow netstream 1.什麼是映象技術?映象技術是一種用來網路監控和故障排除的技術。2.映象技術有什麼用?映象技術可以在不影響報文正常處理流程的情況下,將映象埠的報文複製到乙份觀察埠,使用者利用...

Linux網路流量監控

在windows下,我們可以很方便的通過360來檢視網路流量,知道哪個程序占用的網路頻寬比較多。那在linux下怎麼看流量呢,對於web伺服器來說這是很重要的。下面這邊部落格很仔細的介紹了linux下看流量的方法 linux 各種檢視網絡卡流量的方法 我使用了其中一些,還找了網上其他一些資料,總結如...

ntop監控網路流量

ntop是一種監控網路流量工具,用ntop顯示網路的使用情況比其他一些網路管理軟體更加直觀 詳細。ntop甚至可以列出每個節點計算機的網路頻寬利用率。他是乙個靈活的 功能齊全的,用來監控和解決區域網問題的工具 尤其當ntop與nprobe配合使用,其功能更加顯著。它同時提供命令列輸入和web頁面,可...