开发板测试网口带宽方法

由于项目需要,需对开发板千兆网口传输速率进行测试,开始想到的方法十分简单,直接在开发板上移植一个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);


猜你喜欢

转载自blog.csdn.net/hhhlizhao/article/details/76358306
今日推荐