我最近在做这方面的工作,遇到了一些问题,希望高手们可以指点下。问题描述如下:
lwip 的操作系统模拟曾和驱动层都写好了,但是在运行任务的时候出现了问题。运行到
__pstNewConn = netconn_accept(__pstConn);就一直等待接收了。部分代码如下:
void T_LwIPEntry(void * pvArg)
{
struct netconn *__pstConn, *__pstNewConn;
struct netbuf *__pstNetbuf;
BYTE *__pbData;
LONG __lLen;
//BYTE i = 0, __bIsAdd = TRUE;
struct ip_addr addr={0x63626180};
//* 初始化LwIP
__ilvInitLwIP();
//* 设置LWIP包括设置网络接口、建立接收任务等工作
__ilvSetLwIP();
/* AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19 |
AT91C_PIO_PB20 |
AT91C_PIO_PB21 |
AT91C_PIO_PB22);*/
__pstConn = netconn_new(NETCONN_TCP);
netconn_bind(__pstConn,/*&addr*/NULL , 1095);
netconn_listen(__pstConn);
while(TRUE)
{
__pstNewConn = netconn_accept(__pstConn);
if(__pstNewConn != NULL)
{
__pstNetbuf = netconn_recv(__pstNewConn);
if(__pstNetbuf != NULL)
{
netconn_write(__pstNewConn, "HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n", 44, NETCONN_COPY);
netconn_write(__pstNewConn, " <body> <h1> 这是LWIP TCP测试! </h1> </body> ", 40, NETCONN_COPY);
netbuf_delete(__pstNetbuf);
}
netconn_close(__pstNewConn);
while(netconn_delete(__pstNewConn) != ERR_OK)
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
}
有人遇到过类似的问题吗?