Network_Programming_Assignment_3
Network_Programming_Assignment_3
This document provides details on implementing a TCP client-server socket program using Emacs
on Linux.
The client sends two integers, and the server replies with their sum. The server runs in concurrent
mode.
if (argc != 3) {
printf("Usage: %s <num1> <num2>\n", argv[0]);
return 1;
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr);
close(sockfd);
return 0;
}
close(client_sock);
}
int main() {
int server_sock, client_sock;
struct sockaddr_in server_addr, client_addr;
socklen_t client_len;
signal(SIGCHLD, sigchld_handler);
while (1) {
client_len = sizeof(client_addr);
client_sock = accept(server_sock, (struct sockaddr*)&client_addr, &client_len);
if (fork() == 0) {
close(server_sock);
handle_client(client_sock);
exit(0);
}
close(client_sock);
}
close(server_sock);
return 0;
}
Expected output:
Server Response: Sum = 15
TCP States:
1. LISTEN - Server is waiting for connections.
2. SYN_SENT - Client sent a request.
3. SYN_RECEIVED - Server received a request.
4. ESTABLISHED - Connection is active.
5. FIN_WAIT_1 - One side initiated closure.
6. TIME_WAIT - Connection is closing.
7. CLOSED - Connection terminated.