lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] LWIP1.30+ucos2.86 on luminary lm3s8962


From: greencity greencity
Subject: [lwip-users] LWIP1.30+ucos2.86 on luminary lm3s8962
Date: Thu, 4 Dec 2008 06:14:44 +0000

hi all:

   I am porting lwip1.30 and ucos2.86 on luminary lm3s8962. the RTOS and stack begin work and can ping. So I want to build a sample http server on it.the code below is my http connect task and connect process function. they are writed referenced the httpserver-netconn.c in lwip contrib-1.30.

static void Http_Task(void  *parg) 
{
 extern void http_process(struct netconn *pxNetCon);
 struct netconn *pxHTTPListener, *pxNewConnection;
 
 /* Create a new tcp connection handle */

  pxHTTPListener = netconn_new( NETCONN_TCP );
 netconn_bind(pxHTTPListener, NULL, 80 );
 netconn_listen( pxHTTPListener );

 while(1)
 {
  /* Wait for connection. */
  pxNewConnection=netconn_accept(pxHTTPListener);
  http_process(pxNewConnection);
  netconn_delete(pxNewConnection);
 }


 

extern void
http_process(struct netconn *conn) {
  struct netbuf *inbuf;
  char *buf;
  u16_t buflen;
 
  /* Read the data from the port, blocking if nothing yet there.
   We assume the request (the part we care about) is in one netbuf */
  inbuf = netconn_recv(conn);
 
  if (netconn_err(conn) == ERR_OK) {
    netbuf_data(inbuf, &buf, &buflen);
   
    /* Is this an HTTP GET command? (only check the first 5 chars, since
    there are other formats for GET, and we're keeping it very simple )*/
    if (buflen>=5 &&
        buf[0]=='G' &&
        buf[1]=='E' &&
        buf[2]=='T' &&
        buf[3]==' ' &&
        buf[4]=='/' ) {
     
      /* Send the HTML header
             * subtract 1 from the size, since we dont send the \0 in the string
             * NETCONN_NOCOPY: our data is const static, so no need to copy it
       */
      netconn_write(conn, http_html_hdr, sizeof(http_html_hdr)-1, NETCONN_NOCOPY);
     
      /* Send our HTML page */
      netconn_write(conn, http_index_html, sizeof(http_index_html)-1, NETCONN_NOCOPY);
    }
  }
  /* Close the connection (server closes in HTTP) */
  netconn_close(conn);
 
  /* Delete the buffer (netconn_recv gives us ownership,
   so we have to make sure to deallocate the buffer) */
  netbuf_delete(inbuf);
}

I use realview MDK3.24 built the target and use lm link to debug.when my program runing  I find http server only can connect one time.and when the connect is closed the server send RST package to web browser(MAXTHON). after this I refresh the web browser but the server can not response for this connect request.why??


Get news, entertainment and everything you care about at Live.com. Check it out!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]