Hi guys, am new here so nice to meet u all
i have a problem with a certain client/server program.
the client sends a request to the server and asks it to add 100 to 1557. the server receives the request, does the computation and sends back the results as a string message. can any one help me do this please
Client code
Code:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> /* defines structure in_addr */
#include <netdb.h> /* defines structure hostent */
#include <stdio.h>
#include <string.h>
void main( int argc, char **argv)
{
#define MAXCHAR 80
int size_message, server_len, s; char client_message[MAXCHAR];
struct sockaddr_in client_addr, server_addr;
struct hostent *server_ptr;
/* create a connectionless socket with internet domain */
s = socket(PF_INET,SOCK_DGRAM,0);
/* fill in data structure of client address */
client_addr.sin_family = PF_INET;
/* accept connection on any internet interface */
client_addr.sin_addr.s_addr = htonl (INADDR_ANY);
/* assign arbitrary port number */
client_addr.sin_port= htons(0);
/* bind local address to the socket */
bind(s,(struct sockaddr *)&client_addr,sizeof(client_addr));
/* get address of server and fill in its data structure */
server_ptr = gethostbyname(argv[1]);
server_addr.sin_family = PF_INET;
server_addr.sin_addr= *(struct in_addr *)(server_ptr->h_addr);
server_addr.sin_port= htons(7785);
/* send server a message */
strcpy (client_message,"ADD 100 to my Id 1557");
size_message = strlen(client_message);
printf("The message sent is %s\n", client_message);
printf("The server internet address is %s\n",
inet_ntoa(*server_ptr->h_addr_list));
sendto(s,client_message,size_message,0,
(struct sockaddr *)&server_addr,sizeof(server_addr));
}
Server code
Code:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> /* defines structure in_addr */
#include <netdb.h> /* defines structure hostent */
#include <stdio.h>
#include <string.h>
main()
{
#define MAXCHAR 80
int s;
struct sockaddr_in client_addr, server_addr;
char server_message[MAXCHAR];
int size_message, client_len;
/* create a connectionless socket with internet domain */
s = socket(PF_INET,SOCK_DGRAM,0);
/* fill in data structure of server address */
server_addr.sin_family = PF_INET;
server_addr.sin_addr.s_addr = htonl (INADDR_ANY);
server_addr.sin_port= htons(7785);
/* bind local address to the socket */
bind(s,(struct sockaddr *) &server_addr, sizeof(server_addr));
while(1) {
/* receive message from client */
/* recvfrom blocks until a message arrives */
/* it permits to retrieve the source address of message */
client_len = sizeof (client_addr);
recvfrom(s,server_message,MAXCHAR,0,
(struct sockaddr *)&client_addr,&client_len);
printf("client address: %s\n", inet_ntoa(client_addr.sin_addr));
printf("message received from client: %s\n",server_message);
}
}
so pleeeeease can any one help me?? i'll be very grateful
thanks