• 大小: 22KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-12-03
  • 语言: 其他
  • 标签:

资源简介

模拟实现网络中路由器进行分组转发的过程。至少模拟3个路由器,3个路由器两两相通。 程序需要在主机功能中示发送和接收的数据的原始地址和目的地址,在路由器功能中显示接收到的数据的原始地址和目的地址,当前路由表,查找到的路由记录和转发情况。

资源截图

代码片段和文件信息

#include “host1.h“
#include “ui_host1.h“

#define H1_Ip “127.0.0.1“
#define H2_Ip “127.0.1.1“
#define H3_Ip “127.0.2.1“

#define R1_Ip “127.0.0.11“
#define R2_Ip “127.0.1.11“
#define R3_Ip “127.0.2.11“

#define H1_Port 1111
#define H2_Port 1112
#define H3_Port 1113

#define R1_Port 11111
#define R2_Port 11112
#define R3_Port 11113

QString HSource_ip; //声明发送方IP
QString HS_Text;//声明发送的消息
QString Hdestiny_ip; // 声明目的IP
qint16 Hdestiny_port; //声明主机目的端口

QString HRSource_ip;
QString HR_Text;
QString HRdestiny_ip;
qint16 HRdestiny_port;

int H1choose =1;//初始化选项,选择目的主机,“2”为H2,“3”为H3

Host1::Host1(QWidget *parent) :
    QMainWindow(parent)
    ui(new Ui::Host1)
{
    ui->setupUi(this);
    this->H1_Socket = new QTcpSocket(this);//实例化一个套接字对象
    this->H1_Server = new QTcpServer(this);//实例化 H1 Sever
    ui->SendEdit->setEnabled(false);//当未连接路由器时设置发送按钮,发送框以及显示窗口为不可用
    ui->Send->setEnabled(false);
    ui->Send_text->setEnabled(false);
    NewListen();
}


void Host1::NewListen()

{
     //监听是否有客户端来访,且对任何来访者监听,端口为R1_Port

   if(!H1_Server->listen(QHostAddress(H1_Ip)H1_Port))
   {
           return;
   }
   else
   {
       connect(H1_Server SIGNAL(newConnection()) this SLOT(acceptConnection()));
   }
}

void Host1::acceptConnection()
{
    H1_Socket = H1_Server->nextPendingConnection();
    connect(H1_Socket SIGNAL(readyRead()) this SLOT(revdata()));
}

void Host1::revdata()

{
    //接受信息
    QByteArray datas = H1_Socket->readAll();
    HR_Text = QString(datas).section(“/“11);
    HRdestiny_ip = QString(datas).section(“/“22);
    HRdestiny_port = QString(datas).section(“/“33).toInt();
    HRSource_ip = QString(datas).section(“/“44);
    ui->Destiny->setText(HRdestiny_ip);
    ui->Source->setText(HRSource_ip);
    QString FromHost;
    if(HRSource_ip == H2_Ip)
        FromHost = “H2->H1:“;
    if(HRSource_ip == H3_Ip)
        FromHost = “H3->H1:“;
    ui->Receive->setText(FromHost + HR_Text);
}


Host1::~Host1()
{
    delete ui;
}

void Host1::on_Quit_clicked()
{
    this->close();
}

void Host1::on_Host2_clicked()
{
    if(H1choose == 3)
    {
        ui->Host3->setCheckState(Qt::Unchecked);

    }
    Hdestiny_ip = H2_Ip;
    Hdestiny_port = H2_Port;
    H1choose = 2;
}

void Host1::on_Host3_clicked()
{
    if(H1choose == 2)
    {
        ui->Host2->setCheckState(Qt::Unchecked);

    }
    Hdestiny_ip = H3_Ip;
    Hdestiny_port = H3_Port;
    H1choose = 3;
}

void Host1::not_Connected()
{
    QMessageBox::information(this“连接状态““H1连接失败!!“);
}

void Host1::on_connect_clicked()
{

    H1_Socket->abort();//断开所有连接
    H1_Socket->connectToHost(QHostAddress(H1_Ip)R1_Port); //原本地址应该为R1_IP,为了连接本机,用H1_IP“127.0.0.1”
    bool connected = H1_Socket->waitForConnected();
    if(!connected){
        not_Connected();//连接失败,提示
    }
    else//连接成功将发送按钮和发送框以及显示框置为可用
    {
        ui->SendEdit->setEnabled(true);
        ui->Send->setEnabled(true);
        ui->Send_text->setEnabled(true);
    }

}

void Host1::on_Send_clicked()
{
    /*//获取本机计算机名称
    QStri

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-01-16 16:14  Router_Socket\
     文件         599  2016-12-21 22:10  Router_Socket\Network2.pro
     文件       18061  2016-12-23 13:05  Router_Socket\Network2.pro.user
     文件        4471  2016-12-21 21:41  Router_Socket\host1.cpp
     文件         649  2016-12-21 21:13  Router_Socket\host1.h
     文件        5705  2016-12-21 15:30  Router_Socket\host1.ui
     文件        4114  2016-12-21 21:30  Router_Socket\host2.cpp
     文件         648  2016-12-21 19:57  Router_Socket\host2.h
     文件        5171  2016-12-21 15:30  Router_Socket\host2.ui
     文件        4042  2016-12-21 23:24  Router_Socket\host3.cpp
     文件         648  2016-12-21 22:20  Router_Socket\host3.h
     文件        5237  2016-12-21 22:09  Router_Socket\host3.ui
     文件         418  2016-12-21 22:33  Router_Socket\main.cpp
     文件        4452  2016-12-22 13:47  Router_Socket\router1.cpp
     文件         547  2016-12-21 23:01  Router_Socket\router1.h
     文件        4763  2016-12-21 20:49  Router_Socket\router1.ui
     文件        4401  2016-12-22 13:56  Router_Socket\router2.cpp
     文件         525  2016-12-21 20:02  Router_Socket\router2.h
     文件        5016  2016-12-21 19:34  Router_Socket\router2.ui
     文件        4322  2016-12-22 13:56  Router_Socket\router3.cpp
     文件         526  2016-12-21 22:29  Router_Socket\router3.h
     文件        4533  2016-12-21 22:20  Router_Socket\router3.ui

评论

共有 条评论

相关资源