- Execute the first three steps from the previous part of this recipe. Assign the localhost IP address, 127.0.0.1, as the address to the socket.
- Enter the message to be sent to the server. Invoke the sendto function to send the message to the server.
- Invoke the recvfrom function to get the message from the server. The message that's received from the server is then displayed on the screen.
- Close the descriptor of the socket.
The client program, udpc.c, to send a message to the server and to receive the reply using a UDP socket is as follows:
#include <stdio.h>
#include <strings.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
char msgReceived[255];
char msgforserver[255];
int UDPSocket, n;
struct sockaddr_in client_Address;
printf("Enter the message to send to the server: ");
gets(msgforserver);
bzero(&client_Address, sizeof(client_Address));
client_Address.sin_addr.s_addr = inet_addr("127.0.0.1");
client_Address.sin_port = htons(2000);
client_Address.sin_family = AF_INET;
if ( (UDPSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
perror("Socket could not be created");
exit(1);
}
if(connect(UDPSocket, (struct sockaddr *)&client_Address,
sizeof(client_Address)) < 0)
{
printf("\n Error : Connect Failed \n");
exit(0);
}
sendto(UDPSocket, msgforserver, 255, 0, (struct sockaddr*)NULL,
sizeof(client_Address));
printf("Message to the server sent. \n");
recvfrom(UDPSocket, msgReceived, sizeof(msgReceived), 0, (struct
sockaddr*)NULL, NULL);
printf("Received from the server: ");
puts(msgReceived);
close(UDPSocket);
}
Now, let's go behind the scenes.