Friday, 8 June 2012

Steps to write a UDP client (Unicast).

1. Declare all necessary variables such as buffer, socket descriptor, socket address structure etc.
2. Now Configure socket API with proper parameters.
                s=socket(AF_INET,SOCK_DGRAM,0)
3. Then configure socket address with proper assignments
                saddr.sin_family=AF_INET
                saddr.sin_port=htons(PORT)
4. Then check for address format and convert it into numeric format.
               if(inet_pton(AF_INET,argv[1],&saddr.sin_addr)<=0)
             {
                   printf("Error. Invalid IP adress\n");
                   exit(0);
             }


5.  Then send request to server by using buffer
             if(sendto(s,buffer,strlen(buffer),0,(struct sockaddr*)&saddr,sizeof(sadd))<0)
             {
                     printf("\n Send Error");
                     exit(0);
             }
6. After sending buffer request , i waits for some receiving data.
             printf("\nWaiting for response...\n");
             n=recvfrom(s,buffer,sizeof(buffer)-1,0,NULL,NULL);
             if(n<0)
            {
                  printf("\n Recieve error\n");
                  exit(0);
            }

7. Close Socket.
            close(s);
Full program is as follows:



 
#define PORT 1300
int main(int argc, char *argv[])
{
        int s,n;
        char buffer[100];

        struct sockaddr_in saddr;

        if(argc!=2)
        {
                printf("Usage::<%s><Serv_IP>\n",argv[0]);
                exit(0);
        }
        s=socket(AF_INET,SOCK_DGRAM,0);
        if(s<0)
        {
                printf("Socket Error");
                exit(0);
        }

        saddr.sin_family=AF_INET;
        saddr.sin_port=htons(PORT);

        if(inet_pton(AF_INET,argv[1],&saddr.sin_addr)<=0)
        {
                printf("Error. Invalid IP adress\n");
                exit(0);
        }

        strcpy(buffer,"Hello Server!! I am Client !!");

        printf("Sending request to server %s\n",argv[1]);
        if(sendto(s,buffer,strlen(buffer),0,(struct sockaddr*)&saddr,sizeof(saddr))<0)
        {
                printf("\nSend error\n");
                exit(0);
        }

        printf("\nWaiting for response...\n");
        n=recvfrom(s,buffer,sizeof(buffer)-1,0,NULL,NULL);
        if(n<0)
        {
                printf("\n Recieve error\n");
                exit(0);
        }

        buffer[n]=0;
        printf("\nReply from server %s is %s\n",argv[1],buffer);
        close(s);
        return 0;
}



0 comments

 
© 2011-2012 ProgrammingBlue
Posts RSS Comments RSS
Back to top