1、首先下载Jperf:链接: 提取码:r1id
注:运行该软件还需要java环境,请自行下载jre
这里直接用野火的服务器代码与客户端代码:
void iperf_server(void *thread_param){struct netconn *conn, *newconn;err_t err;void* recv_data;recv_data = (void *)pvPortMalloc(IPERF_BUFSZ);if (recv_data == NULL){printf("No memoryn");}conn = netconn_new(NETCONN_TCP);netconn_bind(conn, IP_ADDR_ANY, 5001);netconn_listen(conn);while (1){/* Grab new connection. */err = netconn_accept(conn, &newconn);/* Process the new connection. */if (err == ERR_OK){struct netbuf *buf;u16_t len;while ((err = netconn_recv(newconn, &buf)) == ERR_OK){/*printf("Recvedn");*/do{netbuf_data(buf, &recv_data, &len);}while (netbuf_next(buf) >= 0);netbuf_delete(buf);}/* Close connection and discard connection identifier. */netconn_close(newconn);netconn_delete(newconn);}}}
static void iperf_client(void *thread_param){struct netconn *conn;int i;int ret;uint8_t *send_buf;uint64_t sentlen;u32_t tick1, tick2;ip4_addr_t ipaddr;send_buf = (uint8_t *) pvPortMalloc(IPERF_BUFSZ);if (!send_buf) return ;for (i = 0; i < IPERF_BUFSZ; i ++)send_buf[i] = i & 0xff;while (1){conn = netconn_new(NETCONN_TCP);if (conn == NULL){printf("create conn failed!n");vTaskDelay(10);continue;}IP4_ADDR(&ipaddr,192,168,0,181);ret = netconn_connect(conn,&ipaddr,5001);if (ret == -1){printf("Connect failed!n");netconn_close(conn);vTaskDelay(10);continue;}printf("Connect to iperf server successful!n");tick1 = sys_now();while (1){tick2 = sys_now();if (tick2 - tick1 >= configTICK_RATE_HZ * 5){float f;f = (float)(sentlen*configTICK_RATE_HZ/125/(tick2 - tick1));f /= 1000.0f;printf("send speed = %.4f Mbps!n", f);tick1 = tick2;sentlen = 0;}ret = netconn_write(conn,send_buf,IPERF_BUFSZ,0);if (ret == ERR_OK){sentlen += IPERF_BUFSZ;}}}}
当准备好工具之后,使用Jperf进行测速,测试后的结果会显示在Output中
其中要对LwIP的配置进行合适的调整,例如:
以下为示例:
//内存堆 heap 大小
#define MEM_SIZE (25*1024)/* memp 结构的 pbuf 数量,如果应用从 ROM 或者静态存储区发送大量数据时这个值应该设置大一点 */
#define MEMP_NUM_PBUF 25/* 最多同时在 TCP 缓冲队列中的报文段数量 */
#define MEMP_NUM_TCP_SEG 150/* 内存池大小 */
#define PBUF_POOL_SIZE 65/* 每个 pbuf 内存池大小 */
#define PBUF_POOL_BUFSIZE
LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN)/* 最大 TCP 报文段, TCP_MSS = (MTU - IP 报头大小 - TCP 报头大小 */
#define TCP_MSS (1500 - 40)/* TCP 发送缓冲区大小(字节) */
#define TCP_SND_BUF (11*TCP_MSS)/* TCP 发送缓冲区队列的最大长度 */
#define TCP_SND_QUEUELEN (8* TCP_SND_BUF/TCP_MSS)/* TCP 接收窗口大小 */
#define TCP_WND (11*TCP_MSS)
本文发布于:2024-02-02 07:15:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682930842212.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |