开发板测试网口带宽方法

来源:互联网 发布:数据与安全监察委员会 编辑:程序博客网 时间:2024/06/11 04:12

由于项目需要,需对开发板千兆网口传输速率进行测试,开始想到的方法十分简单,直接在开发板上移植一个ftp服务器,然后利用Ubuntu上的ftp客户端进行文件传输,以测试网口文件传输速度,但这样做需要将测试文件放到SD卡中,而SD卡的文件传输速度十分有限,远远达不到千兆的要求,所以这样测出的速率不是千兆网口的真实传输速率,因此只能自己编写ftp服务器端来实现文件传输。

方法是先在内存中申请一块较大的内存,然后将存放于SD卡的文件首先传到此内存缓存中,然后再将文件从缓存中传输到电脑,计算文件从缓存到电脑所用的时间,即为网口的真实传输用时。注意这个过程中网线也需要是千兆的。服务器端核心代码如下:

    /* 打开要传输的文件,返回其句柄 */if((fd = open(space + 1, O_RDONLY, 0)) == -1){printf("open file error.\n");}/* BufMax为170M,申请170M内存 */p = (char *)malloc(BufMax); if(p)  printf("Memory Allocated at: %x\n",p);  else  {printf("Not Enough Memory!\n");goto err_ret;  }       int n = 0;for( ; ; ){int m;//char bufmax[BufMax];/* 将文件内容读到缓存buff中 */if((n = Read(fd, buff, sizeof(buff))) == 0)break; bytes += n; /* 复制buff中内容到malloc出的缓存p中 */    memcpy(p+n, buff, n);    //memcpy(p+((++cnt)%19200)*n, buff, n);                                            }volatile int len = 0;while(1){/* 将p中缓存的内容发送到连接套接字connfd */len = Writen(connfd, p + len, BufMax -len);printf(" write date to disk from ddr: %d\n", len);if(len == 0)break;}free(p);


原创粉丝点击