#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>

void blad()
{
  perror("Blad serwera.");
  exit(1);
}

int main()
{
  int gniazdo_klienta;
  int gniazdo_serwera;
  int serwer_dlugosc;
  int klient_dlugosc;
  char znak;
  int test1,test2;
  struct sockaddr_in adres_serwera;
  struct sockaddr_in adres_klienta;


  //Utworzenie gniazda serwera
  test1=gniazdo_serwera=socket(AF_INET, SOCK_DGRAM,0);
  if (test1==-1) blad();

  //Zwiazanie gniazda serwera z adrese
  adres_serwera.sin_family=AF_INET;
  adres_serwera.sin_addr.s_addr=inet_addr("127.0.0.1");
  adres_serwera.sin_port=9734;
  serwer_dlugosc=sizeof(adres_serwera); 
  test2=bind(gniazdo_serwera,(struct sockaddr *)&adres_serwera,serwer_dlugosc);
  if (test2==-1) blad();

  //Serwer czeka na wiadomosc od klienta.
  recvfrom(gniazdo_serwera,&znak,1,0,(struct sockaddr *)&adres_klienta,&klient_dlugosc);
  printf("Otrzymalem od klienta znak %c.\n",znak);

  znak='b';

  //Serwer wysyla klientowi zmodyfikowana wiadomosc
  sendto(gniazdo_serwera,&znak,1,0,(struct sockaddr *)&adres_klienta,klient_dlugosc);
  printf("Wyslalem do klienta znak %c.\n",znak);

  close(gniazdo_serwera);
  exit(0);
}




