• 大小: 693KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: 网络编程  

资源简介

本课程设计的目的是熟悉IP包格式和加深对IP协议的理解。要求编制程序,监控网络,捕获一段时间内网络上的 IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来(建议用图形表示出统计结果)

资源截图

代码片段和文件信息

#include “dialog.h“
#include“NodeList.h“
#include“IPNode.h“
#include“IPMonitor.h“
#include

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{

    QTextCodec::setCodecForTr(QTextCodec::codecForName(“gb2312“));
   setWindowtitle(tr(“IPMonitor by xclee@vip.qq.com“));

    QVBoxLayout *vv = new QVBoxLayout(this);
    QHBoxLayout *hh = new QHBoxLayout;

    timeLabel =new QLabel(tr(“监控时间(ms)“));
    timeLineEdit = new QLineEdit;
    startPushButton = new QPushButton(tr(“开始捕获“));

    hh->addWidget(timeLabel);
    hh->addWidget(timeLineEdit);
    hh->addWidget(startPushButton);

    list = new QTreeWidget;
    list->setHeaderLabels(QStringList()<    vv->addLayout(hh);
    vv->addWidget(list);


    connect(startPushButtonSIGNAL(clicked())thisSLOT(updateList()));

    //updateList();
}

Dialog::~Dialog()
{

}
void Dialog::updateList()
{
    WSADATA wsData;
 QTextCodec::setCodecForTr(QTextCodec::codecForName(“gb2312“));
    // 初始化Winsock DLL
    if (WSAStartup(MAKEWORD(22)&wsData) != 0)
    {
        qDebug()<<“WSAstartup filed!\n“;
        return ;
    }
    // 创建Raw Socket
    SOCKET sock;
    if ( (sock = WSASocket(AF_INET SOCK_RAW IPPROTO_IP NULL 0 WSA_FLAG_OVERLAPPED))  == INVALID_SOCKET )
    {

            qDebug()<< “Create socket failed!“ ;
            return ;
    }
    else
    {
        qDebug()<<“success\n“;
    }

    // 设置IP头操作选项,表示用户可以亲自对IP头进行处理
    BOOL bFlag = TRUE;
    if (setsockopt(sock IPPROTO_IP IP_HDRINCL (char *)&bFlag sizeof(bFlag)) == SOCKET_ERROR)
    {
            qDebug()<<“Setsockopt failed!“;
            return ;
    }

    // 获取本地主机名
    char pHostName[128];
    if (gethostname(pHostName 100) == SOCKET_ERROR)
    {
        qDebug()<<“Gethostname failed!“;
        return ;
    }

    // 通过本地主机名获取本地IP地址
    hostent * pHostIP;
    if((pHostIP = gethostbyname(pHostName)) == NULL)
    {
        qDebug()<<“Gethostname failed!“;
        return ;
    }

    // 填充sockaddr_in结构
    sockaddr_in addr_in;
    addr_in.sin_addr = *(in_addr *)pHostIP->h_addr_list[0];  // 设定IP地址
    addr_in.sin_family = AF_INET; // 设定地址类型
    addr_in.sin_port = htons(8000); // 设定端口

    // 把原始套接字绑定到本机地址上
    if(bind(sock(PSOCKADDR)&addr_insizeof(addr_in)) == SOCKET_ERROR)
    {
            qDebug()<< “Bind failed!“;
            return ;
    }

    // 把网卡设置为混杂模式,以便接收所有的IP包
    #define  IO_RCVALL _WSAIOW(IOC_VENDOR1)
    unsigned long pBufferLen[10];
    unsigned long dwBufferInLen = 1;
    unsigned long dwBytesReturned = 0;
    if ((WSAIoctl(sock IO_RCVALL &dwBufferInLen sizeof(dwBufferInLen) &pBufferLen
            sizeof(pBufferLen) &dwBytesReturned NULL NULL)) == SOCKET_ERROR)
    {
           qDebug()<<“Ioctlsocket failed!“;
            return ;
    }

    // 把socket设置为非阻塞模式
    unsigned long dwTemp = 1;
    ioctlsocket(sock FIONBIO &dw

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     278894  2009-12-26 18:52  IPMonitor\debug\dialog.o

     文件    1959501  2009-12-26 18:53  IPMonitor\debug\IPMonitor.exe

     文件     117855  2009-12-25 15:56  IPMonitor\debug\IPNode.o

     文件     206147  2009-12-26 18:46  IPMonitor\debug\main.o

     文件       2080  2009-12-26 18:48  IPMonitor\debug\moc_dialog.cpp

     文件     213992  2009-12-26 18:48  IPMonitor\debug\moc_dialog.o

     文件     262745  2009-12-26 18:34  IPMonitor\debug\NodeList.o

     文件      24954  2004-06-03 21:08  IPMonitor\debug\WS2_32.LIB

     文件       5471  2009-12-26 19:00  IPMonitor\dialog.cpp

     文件        530  2009-12-26 18:44  IPMonitor\dialog.h

     文件        738  2009-12-25 10:25  IPMonitor\IPMonitor.h

     文件        387  2009-12-25 10:38  IPMonitor\IPMonitor.pro

     文件      15451  2009-12-26 18:58  IPMonitor\IPMonitor.pro.user

     文件       1688  2009-12-25 15:53  IPMonitor\IPNode.cpp

     文件        856  2009-12-25 15:52  IPMonitor\IPNode.h

     文件       3747  2009-12-25 15:18  IPMonitor\main.cpp

     文件       6133  2009-12-25 12:36  IPMonitor\Makefile

     文件       5967  2009-12-25 12:36  IPMonitor\Makefile.Debug

     文件       6056  2009-12-25 12:36  IPMonitor\Makefile.Release

     文件       2710  2009-12-26 18:33  IPMonitor\NodeList.cpp

     文件        318  2009-12-25 15:16  IPMonitor\NodeList.h

     文件      24954  2004-06-03 21:08  IPMonitor\WS2_32.LIB

     目录          0  2009-12-26 18:53  IPMonitor\debug

     目录          0  2009-12-25 09:45  IPMonitor\release

     目录          0  2009-12-25 16:33  IPMonitor

----------- ---------  ---------- -----  ----

              3141174                    25


评论

共有 条评论