Hi,

I was trying to compile a simple UDP echo server (on my winxp machine) using
lwip sockets, as part of my study project. below is the code.

LWIP implemention for win32 was downloaded from googlecode.

But when i connect using the client, the receive callback is not getting
called. Can you please let me know, what i am missing here.

Thank you in advance.

-Sree

#include <lwip/sockets.h>

#include "lwip/netif.h"

#include "lwip/udp.h"

#include "lwip/mem.h"

#include "lwip/memp.h"

#include "net_tap.h"

#include <stdio.h>

#include "lwip/api.h"

#include "lwip/memp.h"

#include "lwip/sockets.h"



extern err_t ethernetif_init(struct netif *netif);



void udpserv()

{

   int sock;

   int bytes_read;

   char *recv_data;

   u32_t addr_len;

   struct sockaddr_in server_addr, client_addr;



   recv_data = malloc(1024);

   if (recv_data == NULL)

   {

       printf("No memory\n");

       return;

   }



   if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)

   {

       printf("Socket error\n");

       free(recv_data);

       return;

   }





   server_addr.sin_family = AF_INET;

   server_addr.sin_port = htons(3333);

   server_addr.sin_addr.s_addr = INADDR_ANY;

   memset(&(server_addr.sin_zero),0, sizeof(server_addr.sin_zero));





   if (bind(sock,(struct sockaddr *)&server_addr,
sizeof(structsockaddr)) == -1)

   {



       printf("Bind error\n");

       free(recv_data);

       return;

   }



   addr_len = sizeof(struct sockaddr);

   printf("UDPServer Waiting for client on port 3333...\n");



   while (1)

   {



       bytes_read = recvfrom(sock, recv_data, 1024, 0,

                (struct sockaddr *)&client_addr,addr_len);



       recv_data[bytes_read] = '\0';





       printf("\n(%s , %d) said : ",inet_ntoa(client_addr.sin_addr),

                  ntohs(client_addr.sin_port));

       printf("%s", recv_data);





       if (strcmp(recv_data, "exit") == 0)

       {

           closesocket (sock);



           free(recv_data);

           break;

       }

   }



   return;

}







void main(int argc, char *argv[])

{

    struct ip_addr ip, mask, gw;

    static struct netif netif;

    int i = 0;



      if (ERR_IF == open_tap())

    exit(1);





      sys_init();

      mem_init();

      memp_init();

      udp_init();





      InitializeCriticalSection(&gCriticalSection);

      lwip_socket_init();



      IP4_ADDR(&ip, 192, 22, 2, 250);

      IP4_ADDR(&mask, 255, 255, 255, 0);

      IP4_ADDR(&gw, 192, 22, 1, 2);



      netif_add(&netif, &ip, &mask, &gw, NULL, ethernetif_init, udp_input);

      netif_set_default(&netif);

      netif_set_up(&netif);



      sys_thread_new("serv thread", udpserv, NULL, 0, 0);



       while(TRUE)

       {

;

       }



  return;

}

* *
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to