资源简介
实验要求实现发送方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
评论
共有 条评论