[Top][All Lists]

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

[lwip-users] Sending and receiving on the same connection

From: Soldavin, Keith A.
Subject: [lwip-users] Sending and receiving on the same connection
Date: Mon, 11 Aug 2014 19:23:56 +0000

I am working on my first project using LWIP 1.4.1 and I am having some trouble. What I need the software to do is to listen on a port for a message from a remote machine and send a response. After it sends the response it needs to send a command to the same remote machine and await a response. I have the first part working fine with the code below. I can listen for a message and send the response with the code below. The problem is with the second part, having the system then send a command to the remote system and wait for a response. If I simply generate the command and send it right after the initial response the remote system doesn’t see it. I have also tried making a separate task that would be triggered by the receive task. The second task creates a new netconn and connects to the remote host. This works for a short while but the responses from the commands are not being processed and shortly fill the memory.


Does anyone have any suggestions? I have been stuck on this for a few days now and I am all out of ideas.






static void vInterlockTask1(void *pvParameters)


       struct netconn *conn, *newconn;

       err_t err;


       struct netbuf *buf;

       uint8_t data[128];

       uint8_t *dataPtr;

       uint16_t len;


       /* Create a new connection identifier. */

       conn = netconn_new(NETCONN_TCP);


       /* Bind connection to the port number. */

       err = netconn_bind(conn, NULL, INTERLOCK_PORT_1);

       if (err != ERR_OK)


              printf("Netcon Bind Error Status: %d\n",err);



       /* Tell connection to go into listening mode. */

       err = netconn_listen(conn);

       if (err != ERR_OK)


              printf("Netcon Listen Error Status: %d\n",err);





              if ((err = netconn_accept(conn, &newconn)) == ERR_OK)


                     while ((err = netconn_recv(newconn, &buf)) == ERR_OK)




                            netbuf_data(buf, (void**)&dataPtr, &len);


                            RequestProcessor( dataPtr, &rspBuf[0], &rspLength );


                           // Send the response back

                           err = netconn_write(newconn, (void *)&data[0], len, NETCONN_COPY);

                           if (err != ERR_OK)


                                  printf("Error Status: %d\n",err);



                      } while (netbuf_next(buf) >= 0);




                     /* Command to remote system goes here??? */






              printf("Newconn error: %d\n",err);



reply via email to

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