UDP sockets

hi...
i have made this client server prog with UDP sockets but im not getting the output. the client sends the message but the server just keeps on waiting. Im running the prog an a solaris 10 box...

server:

main()
{
   	int   sd;
	struct   sockaddr_in server;
	char buf[512];
	int rc,len;

	server.sin_family = AF_INET;
   	server.sin_addr.s_addr = htonl(INADDR_ANY);
   	server.sin_port = htons(1234);

   	sd = socket (AF_INET,SOCK_DGRAM,0);

  	if(bind ( sd, &server, sizeof(server))==-1)
		printf("error\n");
	else
		printf("ok\n");

 	len=sizeof(server);
	printf("check\n");
   
    	printf("check1\n");
      	rc = recvfrom (sd, &buf[0], 2, 0,&server, &len);
      	printf("check2\n");
      	buf[rc]= '\0';
      	printf("Received: %s\n", buf);
}

client

main()
{

        int	sd,a;
	struct	sockaddr_in server;

	sd = socket (AF_INET,SOCK_DGRAM,0);

	server.sin_family = AF_INET;
	server.sin_addr.s_addr=htonl("127.0.0.1");
	server.sin_port = htons(1234);

	a=sendto(sd, "HI",2, 0,&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}

Hi strider u made few small mistakes in ur program that I'm listing down:

1) U need not convert INADDR_ANY to network long
2) In client side u may use inet_aton() to convert client IP address (that u have taken as 127.0.0.1) to in_addr struct

Apart from above I would also like to suggest u two more things that might b helpful

1) In ur server side prog u have used server structure (sockaddr_in server) to store server address as well as the address of connecting clients in 2nd last arg of recvfrom()
2) U can avoid warnings if u type cast pointer to sockaddr_in structure to sockaddr* in bind,sendto and recvfrom.

Now I enlist the rectified code

//server
main()
{
        int   sd;
        struct   sockaddr_in server,clients;
        char buf[512];
        int rc,len;

        server.sin_family = AF_INET;
        server.sin_addr.s_addr = INADDR_ANY;
        server.sin_port = htons(1234);

        sd = socket (AF_INET,SOCK_DGRAM,0);

        if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
                printf("error\n");
        else
                printf("ok\n");

        len=sizeof(clients);
        printf("check\n");

        printf("check1\n");
        rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
        printf("check2\n");
        buf[rc]= '\0';
        printf("Received: %s\n", buf);
        return 0;
}


//client
main()
{

        int     sd,a;
        struct  sockaddr_in server;

        sd = socket (AF_INET,SOCK_DGRAM,0);

        server.sin_family = AF_INET;
        inet_aton("127.0.0.1",&(server.sin_addr));
        server.sin_port = htons(1234);

        a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}

Tell me if this worked for u or not esp. because i've tested it on Linux.

thanks buddy... it worked just fine!
cheers!