fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <arpa/inet.h>
  6.  
  7. #define PORT 8080
  8. #define MAX_CLIENTS 5
  9. #define BUFFER_SIZE 1024
  10.  
  11. int main() {
  12. int server_fd, client_fd;
  13. struct sockaddr_in server_addr, client_addr;
  14. int addrlen = sizeof(server_addr);
  15. char buffer[BUFFER_SIZE] = {0};
  16. FILE *audio_file;
  17. ssize_t bytes_read;
  18.  
  19. // Create socket
  20. if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
  21. perror("Socket creation failed");
  22. exit(EXIT_FAILURE);
  23. }
  24.  
  25. // Set server socket options
  26. server_addr.sin_family = AF_INET;
  27. server_addr.sin_addr.s_addr = INADDR_ANY;
  28. server_addr.sin_port = htons(PORT);
  29.  
  30. // Bind socket to address
  31. if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
  32. perror("Bind failed");
  33. exit(EXIT_FAILURE);
  34. }
  35.  
  36. // Listen for client connections
  37. if (listen(server_fd, MAX_CLIENTS) < 0) {
  38. perror("Listen failed");
  39. exit(EXIT_FAILURE);
  40. }
  41.  
  42. printf("Server listening on port %d...\n", PORT);
  43.  
  44. // Accept incoming connections
  45. if ((client_fd = accept(server_fd, (struct sockaddr )&client_addr, (socklen_t)&addrlen)) < 0) {
  46. perror("Accept failed");
  47. exit(EXIT_FAILURE);
  48. }
  49.  
  50. printf("Client connected\n");
  51.  
  52. // Open audio file
  53. audio_file = fopen("audio_file.mp3", "rb");
  54. if (audio_file == NULL) {
  55. perror("Unable to open audio file");
  56. exit(EXIT_FAILURE);
  57. }
  58.  
  59. // Read and send audio data
  60. while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, audio_file)) > 0) {
  61. send(client_fd, buffer, bytes_read, 0);
  62. }
  63.  
  64. printf("Audio data sent\n");
  65.  
  66. // Close sockets and file
  67. close(client_fd);
  68. close(server_fd);
  69. fclose(audio_file);
  70.  
  71. return 0;
  72. }
Success #stdin #stdout 0.03s 25920KB
stdin
Standard input is empty
stdout
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080
#define MAX_CLIENTS 5
#define BUFFER_SIZE 1024

int main() {
    int server_fd, client_fd;
    struct sockaddr_in server_addr, client_addr;
    int addrlen = sizeof(server_addr);
    char buffer[BUFFER_SIZE] = {0};
    FILE *audio_file;
    ssize_t bytes_read;

    // Create socket
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // Set server socket options
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(PORT);

    // Bind socket to address
    if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("Bind failed");
        exit(EXIT_FAILURE);
    }

    // Listen for client connections
    if (listen(server_fd, MAX_CLIENTS) < 0) {
        perror("Listen failed");
        exit(EXIT_FAILURE);
    }

    printf("Server listening on port %d...\n", PORT);

    // Accept incoming connections
    if ((client_fd = accept(server_fd, (struct sockaddr )&client_addr, (socklen_t)&addrlen)) < 0) {
        perror("Accept failed");
        exit(EXIT_FAILURE);
    }

    printf("Client connected\n");

    // Open audio file
    audio_file = fopen("audio_file.mp3", "rb");
    if (audio_file == NULL) {
        perror("Unable to open audio file");
        exit(EXIT_FAILURE);
    }

    // Read and send audio data
    while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, audio_file)) > 0) {
        send(client_fd, buffer, bytes_read, 0);
    }

    printf("Audio data sent\n");

    // Close sockets and file
    close(client_fd);
    close(server_fd);
    fclose(audio_file);

    return 0;
}