Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;

}