愤怒的大鸟 发表于 2015-1-16 22:36:47

ASP.NET网页设计用c#监控收集流量

数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。监控|流量|收集以下的代码的原作是opensource的一个叫sniffer.net的,用vb.net写的,这里只是复杂的用c#翻译了一下,临时还只能监控一切数据包,不克不及监控某一个历程的数据包,代码以下:
usingSystem;
usingSystem.Text;
usingSystem.Net;
usingSystem.Net.Sockets;
usingSystem.Runtime.InteropServices;namespaceUpdateTester
{
/**////<summary>
///Monitor的择要申明。
///</summary>
publicclassMonitor
{
publicdelegatevoidNewPacketEventHandler(Monitorm,Packetp);
publiceventNewPacketEventHandlerNewPacket;
privateSocketm_Monitor;
privateIPAddressm_Ip;
privatebyte[]m_Buffer=newbyte;
privateconstSystem.Int32IOC_VENDOR=0x18000000;
privateconstintIOC_IN=-2147483648;
privateconstintSIO_RCVALL=IOC_IN^IOC_VENDOR^1;
privateconstintSECURITY_BUILTIN_DOMAIN_RID=0x20;
privateconstintDOMAIN_ALIAS_RID_ADMINS=0x220;
publicSystem.Net.IPAddressIP
{
get{returnm_Ip;}
}
publicbyte[]Buffer
{
get{returnm_Buffer;}
}
publicMonitor()
{
//
//TODO:在此处增加机关函数逻辑
//
}
publicMonitor(IPAddressIpAddress)
{
if(!(Environment.OSVersion.Platform==PlatformID.Win32NT)&&Environment.OSVersion.Version.Major<5)
{
thrownewNotSupportedException("ThisprogramrequiresWindows2000,WindowsXPorWindows.NETServer!");
}
m_Ip=IpAddress;
}
publicvoidStart()
{
if(m_Monitor==null)
{
try
{
m_Monitor=newSocket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);
m_Monitor.Bind(newIPEndPoint(IP,0));
m_Monitor.IOControl(SIO_RCVALL,BitConverter.GetBytes(1),null);
m_Monitor.BeginReceive(m_Buffer,0,m_Buffer.Length,SocketFlags.None,newAsyncCallback(OnReceive),null);
}
catch(Exceptione)
{
m_Monitor=null;
thrownewSocketException();
}
}
}
publicvoidStop()
{
if(m_Monitor!=null)
{
m_Monitor.Close();
}
m_Monitor=null;
}
publicvoidOnReceive(System.IAsyncResultar)
{
try
{
intreceived=m_Monitor.EndReceive(ar);
try
{
if(m_Monitor!=null)
{
byte[]pkt=newbyte;
Array.Copy(Buffer,0,pkt,0,received);
OnNewPacket(newPacket(pkt,DateTime.Now));
}
}
catch(Exceptione)
{
throw;
}
m_Monitor.BeginReceive(Buffer,0,Buffer.Length,SocketFlags.None,newAsyncCallback(OnReceive),null);
}
catch(Exceptione)
{
}
}
protectedvoidOnNewPacket(Packetp)
{
NewPacket(this,p);
}
}
}

usingSystem;
usingSystem.Text;
usingSystem.Net;
usingSystem.Net.Sockets;
namespaceUpdateTester
{
publicenumPrecedence
{
Routine=0,
Priority=1,
Immediate=2,
Flash=3,
FlashOverride=4,
CRITICECP=5,
InternetworkControl=6,
NetworkControl=7
}
publicenumDelay
{
NormalDelay=0,
LowDelay=1
}
publicenumThroughput
{
NormalThroughput=0,
HighThroughput=1
}
publicenumReliability
{
NormalReliability=0,
HighReliability=1
}
publicenumProtocol
{
Ggp=3,
Icmp=1,
Idp=22,
Igmp=2,
IP=4,
ND=77,
Pup=12,
Tcp=6,
Udp=17,
Other=-1
}
/**////<summary>
///Packet的择要申明。
///</summary>
publicclassPacket
{
privatebyte[]m_Raw;
privateDateTimem_Time;
privateintm_Version;
privateintm_HeaderLength;
privatePrecedencem_Precedence;
privateDelaym_Delay;
privateThroughputm_Throughput;
privateReliabilitym_Reliability;
privateintm_TotalLength;
privateintm_Identification;
privateintm_TimeToLive;
privateProtocolm_Protocol;
privatebyte[]m_Checksum;
privatestringm_SourceAddress;
privatestringm_DestinationAddress;
privateintm_SourcePort;
privateintm_DestinationPort;
publicPacket()
{
//
//TODO:在此处增加机关函数逻辑
//
}
//
//publicPacket(byte[]raw):(byte[]raw,DateTimetime)
//{
//Packet(raw,DateTime.Now);
//}
publicPacket(byte[]raw,DateTimetime)
{
if(raw==null)
{
thrownewArgumentNullException();
}
if(raw.Length<20)
{
thrownewArgumentException();
}
this.m_Raw=raw;
this.m_Time=time;
this.m_HeaderLength=(raw&0xF)*4;
if((raw&0xF)<5){thrownewArgumentException();}
this.m_Precedence=(Precedence)((raw&0xE0)>>5);
this.m_Delay=(Delay)((raw&0x10)>>4);
this.m_Throughput=(Throughput)((raw&0x8)>>3);
this.m_Reliability=(Reliability)((raw&0x4)>>2);
this.m_TotalLength=raw*256+raw;
if(!(this.m_TotalLength==raw.Length)){thrownewArgumentException();}//invalidsizeofpacket;
this.m_Identification=raw*256+raw;
this.m_TimeToLive=raw;
m_Protocol=(Protocol)raw;
m_Checksum=newbyte;
m_Checksum=raw;
m_Checksum=raw;
try
{
m_SourceAddress=GetIPAddress(raw,12);
m_DestinationAddress=GetIPAddress(raw,16);
}
catch(Exceptione)
{
throw;
}
if(m_Protocol==Protocol.Tcp||m_Protocol==Protocol.Udp)
{
m_SourcePort=raw*256+raw;
m_DestinationPort=raw*256+raw;
}
else
{

m_SourcePort=-1;
m_DestinationPort=-1;
}
}
publicstringGetIPAddress(byte[]bArray,intnStart)
{
byte[]tmp=newbyte;
if(bArray.Length>nStart+2)
{
tmp=bArray;
tmp=bArray;
tmp=bArray;
tmp=bArray;
}
returntmp+"."+tmp+"."+tmp+"."+tmp;
}
publicintTotalLength
{
get{returnm_TotalLength;}
}
publicDateTimeTime
{
get{returnthis.m_Time;}
}
publicProtocolProtocol
{
get{returnthis.m_Protocol;}
}
publicstringSourceAddress
{
get{returnthis.m_SourceAddress;}
}
publicstringSource
{
get
{
if(m_SourcePort!=-1)
{
returnSourceAddress.ToString()+":"+m_SourcePort.ToString();
}
else
{
returnSourceAddress.ToString();
}
}
}
publicstringDestination
{
get
{
if(this.m_DestinationPort!=-1)
{
returnDestinationAddress.ToString()+":"+m_DestinationPort.ToString();
}
else
{
returnDestinationAddress.ToString();
}
}
}
publicstringDestinationAddress
{
get
{
returnm_DestinationAddress;
}
}
}
}
在主程序里
privateMonitor[]m_PacketMonitors;
privateArrayListm_Packets;
privateSystem.Windows.Forms.StatusBarstatusBar1;
privateintm_PacketsSize;
实行办法中
privatevoidStartMonitor()
{
IPAddress[]hosts=Dns.Resolve(Dns.GetHostName()).AddressList;
if(hosts.Length==0){thrownewNotSupportedException("Thiscomputerdoesnothavenon-loopbackinterfacesinstalled!");}
for(inti=0;i<hosts.Length;i++)
{
}
m_PacketMonitors=newMonitor;
m_Packets=newArrayList();
m_PacketMonitors=newMonitor(hosts);
//增加代办署理,每次有新的packet到时都动身上面哪一个举措
m_PacketMonitors.NewPacket+=newMonitor.NewPacketEventHandler(this.OnNewPacket);
m_PacketMonitors.Start();
}
//这个办法用于把packet显现到一个中央
privatevoidOnNewPacket(Monitorm,Packetp)
{
m_Packets.Add(p);
m_PacketsSize+=p.TotalLength;
try
{
txtLog.Text+=p.Time.ToString()+p.Protocol.ToString()+p.Source.ToString()+p.Destination.ToString()+p.TotalLength.ToString();

}
catch(Exceptione)
{
MessageBox.Show(e.Message);
}
statusBar1.Text=String.Format("Intercepted{0}packet(s)[{1}bytes]",m_Packets.Count,m_PacketsSize);
}
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。

admin 发表于 2015-1-18 07:46:10

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

不帅 发表于 2015-1-21 13:30:40

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

小女巫 发表于 2015-1-30 19:10:25

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。

活着的死人 发表于 2015-2-6 15:12:22

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

只想知道 发表于 2015-2-16 19:53:53

ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

谁可相欹 发表于 2015-3-5 09:16:37

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。

老尸 发表于 2015-3-12 02:30:09

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

精灵巫婆 发表于 2015-3-19 17:37:30

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
页: [1]
查看完整版本: ASP.NET网页设计用c#监控收集流量