Networking Practice Questions
Consider this simple network server program that listens for incoming connections on port 12345 and issues a new ticket number to each client that connects.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
size_t ticket_number = 0;
void issue_ticket(int client_socket) {
char buffer[100];
snprintf(buffer, sizeof(buffer), "Your ticket number is %zu\n",
ticket_number++);
send(client_socket, buffer, strlen(buffer), 0);
close(client_socket);
}
int main() {
struct sockaddr_in server_addr;
int server_socket = socket(PF_INET, SOCK_STREAM, 0);
// Set up the server socket
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(12345);
bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr));
listen(server_socket, 5);
while (1) {
int client_socket = accept(server_socket, NULL, NULL);
issue_ticket(client_socket);
}
return 0;
}
(When logged in, completion status appears here.)