|
From: | sreesh lwip |
Subject: | [lwip-users] udp echo server not working. |
Date: | Fri, 13 Aug 2010 12:28:33 +0530 |
#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;
}
[Prev in Thread] | Current Thread | [Next in Thread] |