www.pudn.com > uCOS_II_uart.rar > tcpecho.c




#include "lwip/sys.h"
#include "lwip/api.h"

extern void uprintf(char *fmt,...);
/*-----------------------------------------------------------------------------------*/
static void 
tcpecho_thread(void *arg)
{
  struct netconn *conn, *newconn;
  err_t err;
  //u8_t	OS_err;
  /* Create a new connection identifier. */
  conn = netconn_new(NETCONN_TCP);


  /* Bind connection to well known port number 7. */
  netconn_bind(conn, NULL, 7);


  /* Tell connection to go into listening mode. */
  netconn_listen(conn);


  while(1) {

    /* Grab new connection. */
    newconn = netconn_accept(conn);

	uprintf(".");
    /*printf("accepted new connection %p\n", newconn);*/
    /* Process the new connection. */
    if(newconn != NULL) {
      struct netbuf *buf;
      void *data;
      u16_t len;
      
      while((buf = netconn_recv(newconn)) != NULL) 
      {
	/*printf("Recved\n");*/
	do {
	  netbuf_data(buf, &data, &len);
	  err = netconn_write(newconn, data, len, NETCONN_COPY);
	  if(err != ERR_OK) {
	    /*	    printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));*/
	  }
	} while(netbuf_next(buf) >= 0);
	netbuf_delete(buf);	
      }
      /*printf("Got EOF, looping\n");*/
      /* Close connection and discard connection identifier. */
      netconn_delete(newconn);
    }
  }
}
/*-----------------------------------------------------------------------------------*/
void
tcpecho_init(void)
{
  sys_thread_new(tcpecho_thread, NULL,TCPIP_THREAD_PRIO);  
}
/*-----------------------------------------------------------------------------------*/