• 大小: 40KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: arq  

资源简介

实验要求实现发送方send将界面读入的数据保存到文件file1.txt中,并启动计时器;接收方receive从file1.txt中查找是否有新字符到来,并提供模拟界面给用户选择{1.接收,2.丢弃,3.超时},并将用户选择的结果记录到file2.txt中;发送方读取file2.txt 决定下面的操作{如果是1,则继续接收用户输入;如果是2,则重传该字符;3.如果是3,则重传该字符}。并将接收的字符保存到file3.txt 中。 【注】:file1.txt要发送的串, file2.txt保存中间结果, file3.txt接受的串。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#include 
#include 
#include 
#include 
using namespace std;
class send//传送类
    {
private:
string sendMsg;//连续传送个帧
        string revert;//接受方的回复
public:
void writeFile1(string msg)//将需要传输的数据写入file1
{
fstream file1;//发送文件
file1.open(“file1.txt“ios::out);
if(!file1)
{
cout<<“file1打开失败!“< }
file1< file1.close();//关闭文件
}

void setSendMsg(int sp)//设置传送的个帧
        {
if(sp == 8)//本帧首次传输
{
fstream file_1(“file1.txt“ios::in);
if(!file_1)
{
cout<<“file1打开失败!“< }
file_1>>sendMsg;
file_1.close();
}
else//从错误的帧开始传输
{
sendMsg.erase(0sp);
fstream file_1(“file1.txt“ios::out);
if(!file_1)
{
cout<<“file1打开失败!“< }
file_1< file_1.close();
}
        }

    int getStart(int sp)//从file2中读取接受方的回复,设置要传送数据的开始位置
{
fstream file_2(“file2.txt“ios::in|ios::out);
file_2>>revert;
file_2.close();
int i = 0;
for( ;i < revert.length();i++)
{
if(revert[i] != ‘1‘)
break;
}
if(i == revert.length())
{
cout<<“5帧全部传输成功!!!“< return 9;//表示全部传输成功
}
else
{
cout<<“在第“< return i;
}

}

    };


class receive//接收类
    {
private:
    char ReceiveNum[5];
public:
void controlMsg()//处理信息,提示.接收该字符.丢弃该字符.超时处理,并将接收的数据放入file3中
{
string temp;
fstream file_1(“file1.txt“ios::in);
if(!file_1)
{
cout<<“file1打开失败!“< }
file_1>>temp;
file_1.close();
if(temp.length())//有新字符
{
cout< cout<<“1.接收该字符       2.丢弃该字符       3.超时处理“< fstream file_2(“file2.txt“ios::out);
for(int i = 0;i < temp.length();i++)
{
cout<<“对于第“< cin>>ReceiveNum[i];
while(ReceiveNum[i] != ‘1‘ &&ReceiveNum[i] != ‘2‘&&ReceiveNum[i] != ‘3‘)
{
cout<<“输入错误,请重新输入:“;
cin>>ReceiveNum[i];
}
file_2< }//for(int i = 0;i < temp.length();i++)
file_2.close();
for(int j = 0;ReceiveNum[j] == ‘1‘&&j < temp.length();j++)//将接收的字符放入file3中
{
fstream file_3(“file3.txt“ios::app);
file_3< file_3.close();
}
}//if(!temp)
}
    };


int main(int argcchar* argv[])
{
using namespace std;
send s;
receive r;

fstream file2;//中间过程存储文件
fstream file3;//接收文件
clock_t start finish;
double   duration;
string information;
cout<<“请输入要传输的数据:“< cin>>information;
cout<<“信息传输中……“< start = clock(); 

int wp = 0;//传送文本的指针

    string sendMsg;
while (true)
    {

sendMsg.clear();
for (;wp < information.length(); )
        {
int sp = 8;//实际传送文本的指针
sendMsg.assign(informationwp5);//将屏幕中要传送的信息给sen

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

     文件       3710  2008-09-22 22:12  040640208 霍瑛\ARQ.cpp

     文件      78336  2008-09-22 22:13  040640208 霍瑛\ARQ协议模拟实现.doc

     文件        208  2008-09-13 22:46  040640208 霍瑛\stdafx.cpp

     文件        236  2008-09-17 12:35  040640208 霍瑛\stdafx.h

     目录          0  2008-09-23 22:10  040640208 霍瑛

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

                82490                    5


评论

共有 条评论