lwip-users
[Top][All Lists]
Advanced

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

[lwip-users] udp echo server not working.


From: sreesh lwip
Subject: [lwip-users] udp echo server not working.
Date: Fri, 13 Aug 2010 12:28:33 +0530

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(struct sockaddr)) == -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;

}

 


reply via email to

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