sockaddr_in c

#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>

int main() {
    // Step 1: Declare a sockaddr_in structure to store socket information
    struct sockaddr_in server_address;

    // Step 2: Initialize the sockaddr_in structure
    server_address.sin_family = AF_INET;             // Address family (IPv4)
    server_address.sin_port = htons(8080);           // Port number (convert to network byte order)
    server_address.sin_addr.s_addr = INADDR_ANY;     // IP address (accept connections from any IP)

    // Step 3: Create a socket using the socket() system call
    int server_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (server_socket == -1) {
        perror("Error creating socket");
        exit(EXIT_FAILURE);
    }

    // Step 4: Bind the socket to a specific IP address and port using bind() system call
    if (bind(server_socket, (struct sockaddr*)&server_address, sizeof(server_address)) == -1) {
        perror("Error binding socket");
        exit(EXIT_FAILURE);
    }

    // Step 5: Listen for incoming connections using listen() system call
    if (listen(server_socket, 10) == -1) {
        perror("Error listening for connections");
        exit(EXIT_FAILURE);
    }

    // Step 6: Accept a connection using accept() system call
    struct sockaddr_in client_address;
    int client_socket, client_address_length = sizeof(client_address);
    client_socket = accept(server_socket, (struct sockaddr)&client_address, (socklen_t)&client_address_length);
    if (client_socket == -1) {
        perror("Error accepting connection");
        exit(EXIT_FAILURE);
    }

    // Step 7: Perform operations on the accepted connection (send/receive data, etc.)

    // Step 8: Close the sockets
    close(client_socket);
    close(server_socket);

    return 0;
}