源码可以从陈硕的github上下载到,位置在muduo-master\examples\ace\ttcp
TTCP是一个传统的测试TCP性能的工具,它主要测试两个机器之间TCP的吞吐量,在应用层模拟消息传递的过程——客户端发送一个包,服务端对包进行确认,并且在确认之前客户端不发送下一个包。可以设置发包的数量和每个包的大小,程序计算传输所有包所用的时间,然后计算出带宽。
操作流程图
以上发送的message都是在应用层中体现的。当一个client发起ttcp的请求时,首先会向server发送一个SessionMessage,里边主要包含了即将发送的数据包个数和每个包的长度。PayloadMessage便是实际的数据,里边包含了一个表示长度的length,和实际的数据data,其中data使用了柔性数组。
main.cc
#include <examples/ace/ttcp/common.h>
#include <assert.h>
int main(int argc, char* argv[])
{
Options options; //用来保存输入的参数信息
if (parseCommandLine(argc, argv, &options)) //把命令行输入的参数保存到结构体中
{
if (options.transmit) //让发送端和接收端分别执行对应的函数
{
transmit(options);
}
else if (options.receive)
{
receive(options);
}
else
{
assert(0);
}
}
}
common.h
#pragma once
#include <string>
#include <stdint.h>
struct Options
{
uint16_t port; //端口
int length; //报文长度
int number; //报文数量
bool transmit, receive, nodelay; //发送端,接收端,是否在传输层禁用negla算法
std::string host; //主机名
Options()
: port(0), length(0), number(0),
transmit(false), receive(false), nodelay(false)
{
}
};
bool parseCommandLine(int argc, char* argv[], Options* opt); //解析命令
struct soc