此程序是用C++进行模拟tcp的“滑动窗口”操作,具体操作如下:
1、首先在提示下发送端输入发送信息和窗口大小
2、调用tcp()函数进行将发送端信息发送给接收端操作
3、具体具体原理如下:
1)发送端每次将窗口大小的信息传给接收端
2)接收端对收到信息进行存储,并发送ack确认给发送端
示例:
1、输入“qwertyuiopasdfghklzxc”作为发送信息

2、输入“5”作为窗口大小

4、输出tcp传输的过程



代码如下:

#include <iostream>
#include <string.h>
using namespace std;void print(char (*m)[30],char *n,int s,int l){int i;cout<<"发送端如下↓"<<endl;cout<<"信息队列:";for(i=0;i<l;i++)cout<<m[0][i]<<' ';cout<<endl<<" ack接收:";for(i=0;i<l;i++)cout<<m[1][i]<<' ';cout<<endl<<endl<<"接收端如下↓"<<endl;cout<<"信息队列:";for(i=0;i<l;i++)cout<<n[i]<<' ';cout<<endl<<endl;
}int tcp(char (*m)[30],char *n,int s,int l)
{char ack[7]="123456";int i,j,k;j=i=0;k=1;cout<<"-------------------------------------------------------"<<endl;cout<<"发送信息为:"<<m[0]<<endl;cout<<"发送信息长度为:"<<l<<endl;cout<<"发送窗口大小为:"<<s<<endl;while(i<l){for(;j<s && i<l;i++){n[i]=m[0][i];m[1][i] = ack[j++];}j=0;cout<<"-------------------------------------------------------"<<endl;cout<<"第"<<k<<"次传输结果:"<<endl;print(m,n,s,l);k++;}
}
int main()
{int l,s;   ///l表示发送信息的长度,char m[2][30]; ///用二维字符组表示发送端发送信息内容与接收到的ack确认信息char n[30];    ///用字符串表示接收端接收信息cout << "请输入发送端信息:" << endl;cin>>m[0];l=strlen(m[0]);while(1){cout << "请输入窗口大小(小于等于6):" << endl;cin>>s;if (s<=5)break;}for(int j = 0;j<l;j++){n[j]='\0';m[1][j]='\0';}tcp(m,n,s,l);return 0;
}

C++模拟TCP滑动窗口传输相关推荐

  1. TCP滑动窗口模拟实战

    1.TCP滑动窗口机制 客户端与服务端之间的通信是一个数据传输的过程,消息以数据包形式进行传输. 在传输的过程中,通过滑动窗口机制来同时传输多个数据包:发送端根据接收端的处理能力,适当控制发送窗口大小 ...

  2. 计算机网络:TCP滑动窗口的流量控制和拥塞控制

    1. 前言 最近在研究网络通信底层通信原理,所以不得不复习一波计算机网络传输控制协议.那么对于程序开发人员,了解底层网络通信原理,对于我们理解BIO.NIO网络通信十分重要.所以对于程序开发人员来说, ...

  3. TCP滑动窗口(发送窗口和接受窗口)

    TCP窗口机制 TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口.用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的. 其实TCP在整个发送过程中, ...

  4. tcp滑动窗口_面试必备TCP(三):滑动窗口

    之前说过TCP协议头部的组成,不清楚可以点击这里,TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输. 每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据, ...

  5. TCP滑动窗口原理终于清楚了!

    我们在学习计算机网络的时候,遇到很多知识点.即便是背的滚瓜烂熟,让你去辨别知识点背后的深层逻辑的时候,可能就手足无措了. 比如小邱去面A公司的时候就被问到: 事实上,这个问题很大程度弥补我计算机网络的 ...

  6. TCP三次握手和四次挥手?TCP如何保证可靠性?什么是TCP滑动窗口?

    TCP三次握手和四次挥手? 三次握手 tcp3handshake.gif tcp3handshake2.gif tcp3handshake3.gif tcp3handshake4.gif 四次挥手 t ...

  7. TCP滑动窗口协议与流量控制

    谈到TCP的滑动窗口协议与流量控制,便会想起当年面试时的场景.那时刚刚毕业,匆匆学了一点TCP的皮毛,仅仅是知道了TCP是面向连接的协议,以对每个报文都进行确认+超时重传的机制来保证端到端的可靠传输: ...

  8. 4.18、TCP滑动窗口

    4.18.TCP滑动窗口 1.滑动窗口的介绍 2.滑动窗口通信的例子 1.滑动窗口的介绍 滑动窗口(Sliding window)是一种流量控制技术.早期的网络通信中,通信双方不会考虑网络的拥挤情况直 ...

  9. TCP/IP(十一)TCP滑动窗口和拥塞控制

    目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大 ...

最新文章

  1. 文件魔术数字_如何使用魔术脚手架自动创建文件并节省时间
  2. 【正一专栏】今晚国足能上演奇迹吗?
  3. 你真的了解Scrum吗?
  4. android 日历仿IOS,基于Android week view仿小米和iphone日历效果
  5. 对抗机器学习(Adversarial Machine Learning)发展现状
  6. 计算机网络滑动窗口机制编程,计算机网络之滑动窗口机制
  7. [转载] python无法从nltk中调取文本 from nltk.book import *
  8. 算法设计与分析(第2版)屈婉玲 刘田 张立昂 王捍贫编著 第二章课后习题答案
  9. 【最新最全】JavaScript从入门到精通_Web前端必学的JS教程
  10. [译文]使用VBA-SDL-H寻找图片
  11. threejs 透视相机参数解析
  12. db与放大倍数的转化
  13. 使用JavaCV把图片合成视频(实用)
  14. 斯坦福cs224n-2021 assignment1-探索词向量—词共现矩阵—SVD(奇异值分解)
  15. Docker部署ELK(配置密码登录)及Elastalert企业微信告警配置
  16. 微信公众号-微信事件推送未正确响应
  17. soup.select()函数的使用用法
  18. 房地产投影沙盘模型制作比例如何确定?
  19. 中国联通云管理研究组组长徐雷:运营商SDN发展策略
  20. 科研论文绘图实操干货汇总,11类Matplotlib图表,含代码

热门文章

  1. Dell 330显卡驱动在2003server安装问题
  2. NTT DATA创建东盟地区历史文化遗产的数字档案并向公众开放
  3. 负债其实证明了你的能力!
  4. [978]手机与电脑adb连接常见问题
  5. linux将用户加入多个组,Linux 用命令把同一个用户加入多个组
  6. tcl电视装鸿蒙,2019年TCL电视安装沙发管家最简单教程,看全网视频+高清直播
  7. 计算机二级试题及分值分布,计算机二级各部分分值分布
  8. G711 G723 G729,带宽计算
  9. 倍福TwinCAT(贝福Beckhoff)应用教程13.3 TwinCAT控制松下伺服 NC配合完整上位
  10. vscode配置java_VS Code 配置 Java IDE