📄 winnetstat.htm
字号:
CString strMsg;
</P>
<P>
CString strOutPut;
</P>
<P>
strOutPut.Format("\r\n************************************\r\n");
</P>
<P>
strMsg.Format("\tUDP Statistics\t\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("\r\n************************************\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("received datagrams:\t%d\r\n",UDPStatsMIB.dwInDatagrams);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams for which no port
exists:\t%d\r\n",UDPStatsMIB.dwNoPorts);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("errors on received datagrams:\t%d\r\n",UDPStatsMIB.dwInErrors);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("sent datagrams:\t%d\r\n",UDPStatsMIB.dwOutDatagrams);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("number of entries in UDP listener
table:\t%d\r\n",UDPStatsMIB.dwNumAddrs);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
m_TextOutput.SetWindowText(strOutPut);
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000ff" size="2">
</P>
<P>
void</FONT><FONT size="2"> CWinNetStatView::OnBnClickedIpstats()
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
</FONT><FONT color="#008000" size="2">// CNetStatManager statMgr; // TODO: Add
your control notification handler code here
</P>
</FONT><FONT size="2">
<P>
MIB_IPSTATS IPStatsMIB;
</P>
<P>
<FONT color="#0000cc"><STRONG>::GetIpStatistics(&IPStatsMIB);</STRONG></FONT>
</P>
<P>
CString strMsg;
</P>
<P>
CString strOutPut;
</P>
<P>
strOutPut.Format("\r\n************************************\r\n");
</P>
<P>
strMsg.Format("\tIP Statistics\t\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("\r\n************************************\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("IP forwarding enabled or disabled:\t%d\r\n",IPStatsMIB.
dwForwarding);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("default time-to-live:\t%d\r\n",IPStatsMIB. dwDefaultTTL);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams received:\t%d\r\n",IPStatsMIB. dwInReceives);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("received header errors:\t%d\r\n",IPStatsMIB. dwInHdrErrors);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("received address errors:\t%d\r\n",IPStatsMIB. dwInAddrErrors);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams forwarded:\t%d\r\n",IPStatsMIB. dwForwDatagrams);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams with unknown protocol:\t%d\r\n",IPStatsMIB.
dwInUnknownProtos);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("received datagrams discarded:\t%d\r\n",IPStatsMIB.
dwInDiscards);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("received datagrams delivered:\t%d\r\n",IPStatsMIB.
dwInDelivers);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("sent datagrams discarded:\t%d\r\n",IPStatsMIB. dwOutDiscards);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams for which no route exists:\t%d\r\n",IPStatsMIB.
dwOutNoRoutes);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams for which all frags did not
arrive:\t%d\r\n",IPStatsMIB.dwReasmTimeout);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams requiring reassembly:\t%d\r\n",IPStatsMIB.
dwReasmReqds);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("successful reassemblies:\t%d\r\n",IPStatsMIB. dwReasmOks);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("failed reassemblies:\t%d\r\n",IPStatsMIB. dwReasmFails);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("successful fragmentations:\t%d\r\n",IPStatsMIB. dwFragOks);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("failed fragmentations:\t%d\r\n",IPStatsMIB. dwFragFails);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("datagrams fragmented:\t%d\r\n",IPStatsMIB. dwFragCreates);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("number of interfaces on computer:\t%d\r\n",IPStatsMIB. dwNumIf);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("number of IP address on computer:\t%d\r\n",IPStatsMIB.
dwNumAddr);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("number of routes in routing table:\t%d\r\n",IPStatsMIB.
dwNumRoutes);
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
m_TextOutput.SetWindowText(strOutPut);
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000ff" size="2">
</P>
<P>
void</FONT><FONT size="2"> CWinNetStatView::OnBnClickedNwParams()
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
FIXED_INFO * FixedInfo;
</P>
<P>
ULONG ulOutBufLen;
</P>
<P>
DWORD dwRetVal;
</P>
<P>
IP_ADDR_STRING * pIPAddr;
</P>
<P>
CString strMsg;
</P>
<P>
CString strOutPut;
</P>
<P>
strOutPut.Format("\r\n************************************\r\n");
</P>
<P>
strMsg.Format("\tNetwork Parameters\t\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("\r\n************************************\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, </FONT><FONT color="#0000ff" size="2">sizeof</FONT><FONT size="2">(
FIXED_INFO ) );
</P>
<P>
ulOutBufLen = </FONT><FONT color="#0000ff" size="2">sizeof</FONT><FONT size="2">(
FIXED_INFO );
</P>
<P>
</FONT><FONT color="#0000cc" size="2"><STRONG>if</STRONG></FONT><FONT size="2"><FONT color="#0000cc"><STRONG>(
ERROR_BUFFER_OVERFLOW == GetNetworkParams( FixedInfo, &ulOutBufLen ) )</STRONG></FONT>
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
GlobalFree( FixedInfo );
</P>
<P>
FixedInfo =(FIXED_INFO *) GlobalAlloc( GPTR, ulOutBufLen );
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000cc" size="2"><STRONG>if</STRONG></FONT><FONT size="2"><FONT color="#0000cc"><STRONG>
( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) )</STRONG></FONT>
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
strMsg.Format( "Call to GetNetworkParams failed. Return Value: %08x\r\n",
dwRetVal );
</P>
<P>
strOutPut+=strMsg;
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000ff" size="2">else</FONT><FONT size="2">
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
strMsg.Format( "Host Name: %s\r\n", FixedInfo -> HostName );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format( "Domain Name: %s\r\n", FixedInfo -> DomainName );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format( "DNS Servers:\r\n" );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format( "\t%s\r\n", FixedInfo -> DnsServerList.IpAddress.String );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
pIPAddr = FixedInfo -> DnsServerList.Next;
</P>
<P>
</FONT><FONT color="#0000ff" size="2">while</FONT><FONT size="2"> ( pIPAddr )
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
strMsg.Format( "\t%s\r\n", pIPAddr ->IpAddress.String );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
pIPAddr = pIPAddr ->Next;
</P>
</BLOCKQUOTE>
<P>
}
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
m_TextOutput.SetWindowText(strOutPut);
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000ff" size="2">
</P>
<P>
void</FONT><FONT size="2"> CWinNetStatView::OnBnClickedAdapterInfo()
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
IP_ADAPTER_INFO * FixedInfo;
</P>
<P>
ULONG ulOutBufLen;
</P>
<P>
DWORD dwRetVal;
</P>
<P>
IP_ADDR_STRING * pIPAddr;
</P>
<P>
CString strMsg;
</P>
<P>
CString strOutPut;
</P>
<P>
strOutPut.Format("\r\n************************************\r\n");
</P>
<P>
strMsg.Format("\t Adaptor Information\t\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format("\r\n************************************\r\n");
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
FixedInfo = (IP_ADAPTER_INFO *) GlobalAlloc( GPTR, </FONT><FONT color="#0000ff" size="2">sizeof</FONT><FONT size="2">(
IP_ADAPTER_INFO ) );
</P>
<P>
ulOutBufLen = </FONT><FONT color="#0000ff" size="2">sizeof</FONT><FONT size="2">(
IP_ADAPTER_INFO );
</P>
<P>
</FONT><FONT color="#0000cc" size="2"><STRONG>if</STRONG></FONT><FONT size="2"><STRONG><FONT color="#0000cc">(
ERROR_BUFFER_OVERFLOW == GetAdaptersInfo( FixedInfo, &ulOutBufLen ) )</FONT></STRONG>
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
GlobalFree( FixedInfo );
</P>
<P>
FixedInfo =(IP_ADAPTER_INFO *) GlobalAlloc( GPTR, ulOutBufLen );
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000cc" size="2"><STRONG>if</STRONG></FONT><FONT size="2"><STRONG><FONT color="#0000cc">
( dwRetVal = GetAdaptersInfo( FixedInfo, &ulOutBufLen ) )</FONT></STRONG>
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
strMsg.Format( "Call to GetAdaptersInfo failed. Return Value: %08x\r\n",
dwRetVal );
</P>
<P>
strOutPut+=strMsg;
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
</FONT><FONT color="#0000ff" size="2">else</FONT><FONT size="2">
</P>
<P>
{
</P>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P>
strMsg.Format( "AdapterName: %s\r\n",FixedInfo->AdapterName );
</P>
<P>
strOutPut+=strMsg;
</P>
<P>
strMsg.Format( "Description: %s\r\n",FixedInfo->Description );
</P>
<P>
strOutPut+=strMsg;
</P>
</BLOCKQUOTE>
<P>
}
</P>
<P>
m_TextOutput.SetWindowText(strOutPut);
</P>
</BLOCKQUOTE>
<P>
}
</P>
</FONT></TD></TR></TBODY></TABLE></EM></STRONG></P>
<P>
<STRONG><EM></EM></STRONG>
</P>
<P>
I have included some screen shots of the demo application.
</P>
<P>
<IMG height="960" src="tcpstats.jpg" width="1160" border="0">
</P>
<P>
</P>
<P>
<IMG height="885" src="ipstats.jpg" width="1280" border="0">
</P>
<P>
<IMG height="960" src="udpstats.jpg" width="1160" border="0">
</P>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -