woshiwowo 发表于 2010-12-2 10:35:34

怎么用 Netio测试

工程中加入 \net\apps\netio.c
在初始化中netio_init()命令,然后进行测试吗? 如下:
intmain (void)
{
   System_Setup();
   LwIP_Init();
   netio_init();
   while (1)
{
              System_Periodic_Handle();
}
}
可是我只能测到有一个发送包的结果,再没有了,如下:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_601697DGBPGR.jpg
(原文件名:CESHI.jpg)

不应该是连续的吗,为什么我的只有一个结果??

woshiwowo 发表于 2010-12-2 10:51:19

先自己顶一下,版主回复一下,谢谢

woshiwowo 发表于 2010-12-2 11:02:10

忘了问一下,这个SERVER 还是CLIENT没关系吧,我做的是SERVER,跟踪了一下,发送命令后会进入发,收程序,以后再也进不了了,

void netio_init(void)
{
struct tcp_pcb *pcb;

pcb = tcp_new();
tcp_bind(pcb, IP_ADDR_ANY, 18767);
pcb = tcp_listen(pcb);
tcp_accept(pcb, netio_accept);
}

static err_t
netio_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
struct netio_state * ns;

LWIP_UNUSED_ARG(err);

ns = mem_malloc(sizeof(struct netio_state));

if(ns == NULL){
    return ERR_MEM;
}

ns->state = NETIO_STATE_WAIT_FOR_CMD;
ns->data_len = 0;
ns->cmd = 0;
ns->cntr = 0;
ns->buf_pos = 0;
#if NETIO_USE_STATIC_BUF == 1
ns->buf_ptr = netio_buf;
#else
ns->buf_ptr = mem_malloc(NETIO_BUF_SIZE);

if(ns->buf_ptr == NULL){
    mem_free(ns);
    return ERR_MEM;
}
#endif

ns->buf_ptr = 0;

tcp_arg(pcb, ns);
tcp_sent(pcb, netio_sent);
tcp_recv(pcb, netio_recv);
tcp_poll(pcb, netio_poll, 4); /* every 2 seconds */
return ERR_OK;
}

不是有tcp_poll吗,为什么不通循环呢?谢谢

ffxz 发表于 2010-12-3 19:34:46

你的应该不是RT-Thread上的lwip吧,如果是RT-Thread上的lwip,只需要用finsh shell启动netio就可以做测试了。

woshiwowo 发表于 2010-12-4 11:28:34

回复【3楼】ffxz
-----------------------------------------------------------------------

不是,在UCOSII上的LWIP,不过我很想测一下我的LWIP速度,在本版中查到了一些相关信息,但是不知为什么,我的就是出现问题,所以借贵宝地问问,不好意思,版主大人,占用了一下贵宝地,不过我觉得只是RTOS不一样,原理应该差不多,所以楼主麻烦解答一下吧,小弟感激不尽!!

woshiwowo 发表于 2010-12-4 11:33:55

回复【3楼】ffxz
-----------------------------------------------------------------------

不过我这个是裸LWIP的测试,开发环境是IAR,并没有任何操作系统,当然我希望最后带RTOS,,所以楼主麻烦解答一下吧,小弟感激不尽!!

shaolin 发表于 2010-12-4 12:16:47

回复【5楼】woshiwowo
-----------------------------------------------------------------------

你必须首先确保lwip运行正常,tcp发送和接收都没有问题。

woshiwowo 发表于 2010-12-6 09:33:23

回复【6楼】shaolin
-----------------------------------------------------------------------

当工程中加入 \net\apps\http.c 主程序如下:
intmain (void)
{
   System_Setup();
   LwIP_Init();
   httpd_init();
   while (1)
{
       System_Periodic_Handle();
}
}

我lwip运行正常,tcp发送和接收都没有问题。
我是不明白netio是怎么工作的,命令敲入后怎么让它连续收发?由我图中看出发完后好像没有进入接收,不知道为什么??大牛们帮帮我解决一下!

yaodongliang 发表于 2011-1-10 17:35:42

回复【楼主位】woshiwowo
-----------------------------------------------------------------------

楼主,不知你的测速可以了没有呢,我用的是ucos+lwip,建了一个任务,在任务里面,将tcpip的各项初始化,然后再调用netio_init(),然后是死循环。如下:
        sem = sys_sem_new(0);
        tcpip_init(tcpip_init_done, &sem);
        sys_sem_wait(sem);
        sys_sem_free(sem);

        IP4_ADDR(&gw, 192,168,0,1);
        IP4_ADDR(&ipaddr, 192,168,0,207);
        IP4_ADDR(&netmask, 255,255,255,0);
        netif_set_default(netif_add(&loop_netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input));
      netif_set_up(&loop_netif);
        netio_init();
        while(1);
不知道这样操作是否正确呢?但是我用PC机的程序的时候,只能够出现上面的
NETIO - Network Throughput Benchmark, Version 1.31
(C) 1997-2008 Kai Uwe Rommel
下面就没显示了,怎么回事呢?

wky2wy 发表于 2012-10-19 18:04:08

楼主问题解决没,我也是裸奔的lwip,现在移植好了什么都通了想测速度,将netio.c同样方法添加,发现跟你一样的问题
这个帖子http://www.amobbs.com/thread-5472533-1-1.html   说能够调通,可我没通撒
页: [1]
查看完整版本: 怎么用 Netio测试