-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStopWait.cpp
79 lines (68 loc) · 1.96 KB
/
StopWait.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// StopWait.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Global.h"
#include "RdtSender.h"
#include "RdtReceiver.h"
#include "StopWaitRdtSender.h"
#include "StopWaitRdtReceiver.h"
#include "GBNRdtReceiver.h"
#include "GBNRdtSender.h"
#include "SRRdtReceiver.h"
#include "SRRdtSender.h"
#include "TCPRdtReceiver.h"
#include "TCPRdtSender.h"
int main(int argc, char* argv[])
{
int batMode = 1;
//为1表示当前使用了批处理程序检查
RdtSender* ps = NULL;
RdtReceiver* pr = NULL;
FILE* newOut = NULL;
#ifndef NONE_GBN_RDT_SENDER_MODE
ps = new GBNRdtSender();
pr = new GBNRdtReceiver();
cout << "GBN Online" << endl;
//指示当前的模式
if (batMode == 0)
freopen_s(&newOut, "result.txt", "w", stdout);
//如果没有使用批处理检查,则将输出重定向到文件
#endif // !NONE_GBN_RDT_SENDER_MODE
#ifndef NONE_SR_RDT_SENDER_MODE
ps = new SRRdtSender();
pr = new SRRdtReceiver();
cout << "SR Online" << endl;
if(batMode==0)
freopen_s(&newOut, "result.txt", "w", stdout);
#endif // !NONE_SR_RDT_SENDER_MODE
#ifndef NONE_TCP_RDT_SENDER_MODE
ps = new TCPRdtSender();
pr = new TCPRdtReceiver();
cout << "TCP Online" << endl;
//指示当前的模式
if (batMode == 0)
freopen_s(&newOut, "result.txt", "w", stdout);
//如果没有使用批处理检查,则将输出重定向到文件
#endif // !NONE_TCP_RDT_SENDER_MODE
#ifndef NONE_STOP_WAIT_RDT_SENDER_MODE
ps = new StopWaitRdtSender();
pr = new StopWaitRdtReceiver();
cout << "Stop Wait Online" << endl;
#endif // !NONE_STOP_WAIT_RDT_SENDER_MODE
// pns->setRunMode(0); //VERBOS模式
pns->setRunMode(1); //安静模式
pns->init();
pns->setRtdSender(ps);
pns->setRtdReceiver(pr);
pns->setInputFile("input.txt");
pns->setOutputFile("output.txt");
pns->start();
delete ps;
delete pr;
delete pUtils; //指向唯一的工具类实例,只在main函数结束前delete
delete pns; //指向唯一的模拟网络环境类实例,只在main函数结束前delete
if(newOut!=NULL)
fclose(newOut);
/*必须要进行判断,因为你不能嗯关一个NULL的文件指针指向的文件*/
return 0;
}