以下的**的原作是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頁面,可...