Write two C programs using sockets on Linux that implement the following behavio
ID: 3831904 • Letter: W
Question
Write two C programs using sockets on Linux that implement the following behavior:
One program is a server, and the other is a client
The server:
o Receives numbers that are sent from the client
o Keeps a running sum of all numbers received so far
o Sends a the sum of all numbers received back to the client every time a new number is received
The client:
o Establishes a connection to the server
o Prompts the user to enter a number
o Sends the number to the server
o Waits for a response back that says what the sum so far is
o Prints the response received from the server
Please Provide comments in the codes.
Explanation / Answer
Server Code:
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
int main()
{
int welcomeSocket,
newSocket;
char buffer[1024];
struct sockaddr_in serverAddr;
struct sockaddr_storage serverStorage;
socklen_t addr_size;
welcomeSocket = socket(PF_INET, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(7891);
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
memset(serverAddr.sin_zero, '', sizeof serverAddr.sin_zero);
bind(welcomeSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr));
if
(listen(welcomeSocket,5)==0)
printf("Listening ");
else
printf("Error ");
addr_size = sizeof serverStorage;
newSocket = accept(welcomeSocket, (struct sockaddr *) &serverStorage, &addr_size);
strcpy(buffer,"Hello World ");
send(newSocket,buffer,13,0);
return 0;
}
Client Code
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
int main()
{
int clientSocket;
char buffer[1024];
struct sockaddr_in serverAddr;
socklen_t addr_size;
clientSocket = socket(PF_INET, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(7891);
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
memset(serverAddr.sin_zero, '', sizeof serverAddr.sin_zero);
addr_size = sizeof serverAddr;
connect(clientSocket, (struct sockaddr *) &serverAddr, addr_size);
recv(clientSocket, buffer, 1024, 0);
printf("Data received: %s",buffer);
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.