hehe

🧩 Syntax:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <strings.h>
#include <sys/socket.h>
#include <wait.h>
#define SIZE 1024

void write_file(int socket_server){
  int n;
  FILE *plik;
  char *nazwa_pliku = "recv.txt";
  char buffer[SIZE];
  plik = fopen(nazwa_pliku, "w");

  while (1) {
    n = recv(socket_server, buffer, SIZE, 0);
    if (n <= 0){
      break;
      return;
    }
    fprintf(plik, "%s", buffer);
    bzero(buffer, SIZE);
  }
  return;
}

void handle_ctrlc(int signal){
	printf("Przerwano prace serwera przez uzycie CTRL+C.\n"); 
	exit(0);
}

int main(){
  char *ip = "127.0.0.1";
  int port = 8080;
  int e;
  pid_t pid;
  int socket_server, socket_client;
  struct sockaddr_in server_addr, new_addr;
  socklen_t addr_size;
  signal (SIGINT, handle_ctrlc);
  char buffer[SIZE];

  socket_server = socket(AF_INET, SOCK_STREAM, 0);
  if(socket_server < 0) {
    printf("BLAD SOCKETU SERWERA.");
    exit(1);
  }
  printf("Socket serwera utworzony.\n");

  server_addr.sin_family = AF_INET;
  server_addr.sin_port = port;
  server_addr.sin_addr.s_addr = inet_addr(ip);

  e = bind(socket_server, (struct sockaddr*)&server_addr, sizeof(server_addr));
  if(e < 0) {
    printf("BLAD BIND SERWERA.");
    exit(1);
  }
  printf("Bind przeprowadzony pomyslnie.\n");

  n = listen(socket_serv, 10);
  if(n==0){
		printf("Gniazdo serwera nasluchuje...\n");
	}else{
		printf("BLAD NASLUCHIWANIA.");
        exit(1);
	}

  while(1){
    printf("Server oczekuje...\n");
    addr_size = sizeof(new_addr);
    
		
    if (socket_client<0){
    printf("BLAD SOCKETU SERWERA.");
    exit(1);
    }
	  
    pid = fork();
    if(pid == 0){
        printf("Nawiazano polaczenie z klientem.\n");
        addr_size = sizeof(new_addr);
 	    socket_client = accept(socket_server, (struct sockaddr*)&new_addr, &addr_size);
  	    write_file(socket_client);
  	    printf("Pomyslnie zapisano plik.\n");
        if(close(socket_client) == 0){
            printf("Polaczenie z klientem zakonczono.\n");
        }else{
            printf("BLAD - nie zakonczono polaczenia\n");
        }
        break;
    }
  }
  return 0;
}