计算机网络课程设计报告(3)

2019-08-17 13:25

网络编程接口软件 Winsock1 或 Winsock2 里面的一个命令。 WSAEnumProtocols,获取现有传送协议的相关信息: 关键代码:

m_ctrlList.ResetContent();

WSADATA WSAData;

if (WSAStartup(MAKEWORD(2, 0), &WSAData) != 0) { }

int nResult = 0; //获得需要的缓冲区大小 DWORD nLength = 0;

nResult = WSAEnumProtocols(NULL, NULL, &nLength); if (nResult != SOCKET_ERROR) { }

if (WSAGetLastError() != WSAENOBUFS) { }

WSAPROTOCOL_INFO* pProtocolInfo = (WSAPROTOCOL_INFO*)new BYTE[nLength]; //获得本地计算机协议信息

nResult = WSAEnumProtocols(NULL, pProtocolInfo, &nLength); if (nResult == SOCKET_ERROR) { }

for (int n = 0; n < nResult; n++) { }

m_ctrlList.AddString(pProtocolInfo[n].szProtocol); delete[] pProtocolInfo; return; return; return; return;

11

delete[] pProtocolInfo; //清理WinSock WSACleanup();

运行结果:

图 8 网络协议

5.6 系统时间模块设计

直接调用GetCurrentTime()函数获取系统时间并显示。 关键代码:

CString str; //获取系统时间

CTime tm;

tm = CTime::GetCurrentTime();

str = tm.Format(\现在时间是%Y年%m月%d日 %X\); MessageBox(str, NULL, MB_OK);

运行结果:

图 9 系统时间

12

5.7 IP统计信息模块设计

直接调用GetIpStatistics()函数来获取本机的IP统计信息,将其显示出来。 关键代码:

m_ctrlList.ResetContent();

CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST2); pListBox->ResetContent(); MIB_IPSTATS IPStats; //获得IP协议统计信息

if (GetIpStatistics(&IPStats) != NO_ERROR) { }

CString strText = _T(\);

strText.Format(_T(\接收的数据包:%d\), IPStats.dwInReceives); pListBox->AddString(strText);

strText.Format(_T(\接收的标头错误:%d\), IPStats.dwInHdrErrors); pListBox->AddString(strText);

strText.Format(_T(\接收的地址错误:%d\), IPStats.dwInAddrErrors); pListBox->AddString(strText);

strText.Format(_T(\转发的数据报:%d\), IPStats.dwForwDatagrams); pListBox->AddString(strText);

strText.Format(_T(\接收的未知协议:%d\), IPStats.dwInUnknownProtos); pListBox->AddString(strText);

strText.Format(_T(\丢弃的接收数据包:%d\), IPStats.dwInDiscards); pListBox->AddString(strText);

strText.Format(_T(\传送的接收数据包:%d\), IPStats.dwInDelivers); pListBox->AddString(strText); strText.Format(_T(\输出请求:%d\),

IPStats.dwOutRequests); return;

pListBox->AddString(strText);

strText.Format(_T(\路由丢弃:%d\), IPStats.dwOutDiscards); pListBox->AddString(strText);

13

strText.Format(_T(\丢弃的输出数据包:%d\), IPStats.dwOutDiscards); pListBox->AddString(strText);

strText.Format(_T(\输出的数据包无路由s:%d\), IPStats.dwOutNoRoutes); pListBox->AddString(strText);

strText.Format(_T(\需要重新组合:%d\), IPStats.dwReasmReqds); pListBox->AddString(strText);

strText.Format(_T(\重新组合成功:%d\), IPStats.dwReasmOks); pListBox->AddString(strText);

strText.Format(_T(\重新组合失败:%d\), IPStats.dwReasmFails); pListBox->AddString(strText);

strText.Format(_T(\数据报分段成功:%d\), IPStats.dwFragOks); pListBox->AddString(strText);

strText.Format(_T(\数据报分段失败:%d\), IPStats.dwFragFails); pListBox->AddString(strText);

strText.Format(_T(\分段已创建:%d\), IPStats.dwFragCreates); pListBox->AddString(strText);

运行结果:

图10 IP统计信息

5.8 TCP统计信息模块设计

直接调用GetTcpStatistics函数获取本机的TCP统计信息,我们只需要将其显示出来就行了。

关键代码:

m_ctrlList.ResetContent();

CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST2);

14

pListBox->ResetContent();

//MIB_TCPSTATS 包含本机上正运行的TCP协议的统计表 MIB_TCPSTATS TCPStats; //获得TCP协议统计信息

if (GetTcpStatistics(&TCPStats) != NO_ERROR) { }

CString strText = _T(\);

strText.Format(_T(\主动开放:%d\), TCPStats.dwActiveOpens); pListBox->AddString(strText);

strText.Format(_T(\被动开放:%d\), TCPStats.dwPassiveOpens); pListBox->AddString(strText);

strText.Format(_T(\失败的连接尝试:%d\), TCPStats.dwAttemptFails); pListBox->AddString(strText);

strText.Format(_T(\重置连接:%d\), TCPStats.dwEstabResets); pListBox->AddString(strText);

strText.Format(_T(\当前连接:%d\), TCPStats.dwCurrEstab); pListBox->AddString(strText);

strText.Format(_T(\接收的分段:%d\), TCPStats.dwInSegs); pListBox->AddString(strText);

strText.Format(_T(\发送的分段:%d\), TCPStats.dwOutSegs); pListBox->AddString(strText);

strText.Format(_T(\重新传输的分段:%d\), TCPStats.dwRetransSegs); pListBox->AddString(strText);

return;

运行结果:

图11 TCP统计信息

15


计算机网络课程设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:土样的分类

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: