交换机MAC地址表的形成过程动态演示(2)

2019-04-16 14:19

class Switcher //交换机类 { public:

void SetName(char sname[]); char name[20]; Switcher();

void ComputeMACTable(); void SendData();

void RecvData(int p_num,Message str_me); void PrintTable(); void SaveMAC();

Switcher(int s_pnum,char* s_name ); friend Computer; virtual ~Switcher(); private:

int mess_FromPort; char mess_FromMAC[18]; int PORTNUM; int mess_ToPort; char mess_ToMAC[18]; Message buffer; Recordset Temp;

vectorMACTable;//使用创建一个Recordset类型的序列容器MACTAble

};

主程序(详细的见程序源代码,有注解) const COMPUTER_NUM=5; void Graph();//打印拓扑图 void Menu();//打印可选菜单 char SelectNum();//等待输入选项 void MakeMessage();//构造消息 void Init();//系统初始化

char* InputMAC();//专门用于输入MAC地址并返回其指针 void SetComputer();//用于设置计算机 void SetSwitcher();//用于设置交换机 void Start();//演示系统运行 void Working();//环境系统工作 //构造演示系统的环境和设备

Switcher sw(5,\实例一个五口的交换机 名:switcher Computer co[COMPUTER_NUM];//定义五台电脑 Message message1;//定义一个消息 int port;//消息从交换机的port端口进入 int from,to;//记录消息的始,终计算机的下标

char MAC[18];//全局MAC Input()对其改变并返回指向它的指针 //主函数 程序入口

int main(int argc,char*[]) {

Init();

Start(); return 0; }

主程序中的部分函数 char SelectNum() {

char error='e'; char ch[2]; ch[0]=getche(); ch[1]=getch();

if(ch[1]=='\\r'||ch[1]=='\\n')//一定要保证第二个从键盘输入的为回车

return ch[0]; else

return error;//否则返回一个error }

void MakeMessage() {

int i=1;

char computer_name[20];

while(i)//确保系统中有源主机,直到输入正确的为至 {

cout<<\选择源主机:\ cin>>computer_name;

for(i=0;i

if(!strcmp(co[i].name,computer_name))//找到这台计算机

{

from=i;//记录源主机在数组中的下标 port=co[i].port;//源主机所接入的switcher的端口号

break; } } if(i==5)

cout<<\输入错误!\\n\ else i=0; }

i=1;//同样确保系统中有宿主机,直到输入正确的为至 while(i) {

cout<<\选择宿主机:\ cin>>computer_name; for(i=0;i

if(!strcmp(co[i].name,computer_name)) { to=i; break; } } if(i==5)

cout<<\输入错误!\\n\ else i=0; }

strcpy(co[from].mess.FromMAC,co[from].MAC);//构造源主机所发消息的源MAC目标MAC

strcpy(co[from].mess.ToMAC,co[to].MAC); port=co[from].port;

strcpy(message1.FromMAC,co[from].MAC);//构造系统消息的源MAC目标MAC

strcpy(message1.ToMAC,co[to].MAC); cout<<\输入要发送的内容(以@结束):\ cin.getline(message1.Data,1024,'@');

//ASSERT(message1.Data[0]=='\\r');//用宏调试出message1.Data[0]为'\\r'

//所以要过滤第一个字符'\\r' for(i=0;i<1024&&message1.Data[i]!='\\0';i++) message1.Data[i]=message1.Data[i+1];


交换机MAC地址表的形成过程动态演示(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:GMP知识材料

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

马上注册会员

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