All pastes #461057 Raw Edit

Mine

public c v1 · immutable
#461057 ·published 2007-04-27 14:13 UTC
rendered paste body
/************************************************************************** *        IPK projekt 2                                                   * * varianta 1 - Jednoduchá adresárová služba                              *                     * * autor: Matus Kovac xkovac18                                            * * datum: 27.4                                                            *            **************************************************************************/   #include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <netdb.h>#include <string.h>#include <time.h>#include "packet.h"#include <sys/types.h>#include <sys/wait.h>s_packet packet;int main(int argc, char *argv[]){  extern char *optarg;  int c;  int port = -1;   /* Pomocne premenne pre vytvorenie socketu */  int s, t, sinlen;  struct sockaddr_in sock_in;  char mess[80];  struct hostent *hostptr;  int j;  int cislo = 0;// ulozenie udajov zo suboru char priezvisko[20]; char meno[20]; char login[9]; char fakulta[5]; char bciarka;//Parametre vyhladavania  int emptyN=0;   int emptyS=0;  int emptyL=0;  int emptyF=0;  /* ziskanie cisla portu */  /* kontrola, spravneho paramertu - cislo portu*/  while((c = getopt(argc, argv, "p:")) != EOF)    {      switch(c)	{	case 'p':	  port = atoi(optarg); /* ulozenie cisla portu */	  break;	case '?':	  printf("Neznamy alebo ziadny parameter.\n");	  	  return -1;	  break;	}        }    if(argc < 3 || port == -1 || !port)     {	      printf("Wrong port number.\n");      return -1;    }       /* Vytvorenie noveho socketu pre pripojenie */  fprintf(stderr, "Creating socket..\t\t\t\t");  if((s = socket(PF_INET, SOCK_STREAM, 0)) < 0)    {      fprintf(stderr, "CHYBA\n");      return -1;    }  fprintf(stderr, "DONE\n");  /* parametry socketu */  /* protokolu na Internet */  sock_in.sin_family = PF_INET;           /* cislo portu */  sock_in.sin_port = htons(port);         /* nastavenie adresy*/  sock_in.sin_addr.s_addr = INADDR_ANY;   fprintf(stderr, "Connecting to port..\t\t\t\t");  if(bind(s, (struct sockaddr *)&sock_in, sizeof(sock_in)) < 0)    {      fprintf(stderr, "CHYBA\n");      return -1;    }  fprintf(stderr, "DONE\n");  /* test */  fprintf(stderr, "Listening..\t\t\t\t");  if(listen(s, 5))    {      fprintf(stderr, "CHYBA\n");      return -1;    }  fprintf(stderr, "DONE\n");  sinlen = sizeof(sock_in);  fprintf(stderr, "Server is running\n");  /* cakanie v nekonecnej smycke na ulohu od klienta */  while(1)    {           /* kontrola prijatych dat */      if((t = accept(s, (struct sockaddr*)&sock_in, &sinlen)) < 0)      {	fprintf(stderr, "CHYBA : Chyba pri prijmani dat\n");	return -1;      }    if (fork() == 0){            /* zistenie adresy hosta */      hostptr = (struct hostent *)gethostbyaddr((char *)&sock_in.sin_addr, 4, AF_INET);      j = (int)hostptr->h_length;      /*Vypis informacii o naviazani spojenia */      printf("Z %s (%s): %d. ", inet_ntoa(sock_in.sin_addr), hostptr->h_name, ntohs(sock_in.sin_port));      	/* kontrola precitanych dat + nacitanie dat*/      if(read(t, &packet, sizeof(packet)) < 0) 	{	  fprintf(stderr, "CHYBA: Chyba pri citani dat\n");	  return -1;	}    FILE *f;    f = fopen("ipk_database.txt", "r");    if (f == NULL)      {        fprintf(stderr, "Nepodarilo sa otvorit subor !\n");        exit(EXIT_FAILURE);      }    if(strchr(packet.name,'*')!=NULL) emptyN=1;    if(strchr(packet.surname,'*')!=NULL) emptyS=1;    if(strchr(packet.login,'*')!=NULL) emptyL=1;    if(strchr(packet.faculty,'*')!=NULL) emptyF=1;cislo = 0;while (cislo < 536){fscanf(f, "%d", &cislo);//cislobciarka = getc(f);//prva bodkociarkafscanf(f, "%[^;]s", priezvisko);//priezviskobciarka = getc(f);//druha bodkociarkafscanf(f, "%[^;]s", meno);//menobciarka = getc(f);//tretia bodkociarkafscanf(f, "%[^;]s", login);//loginbciarka = getc(f);//stvrta bodkociarkafscanf(f, "%s", fakulta);//fakulta    if(emptyN==1) strcpy(packet.name,meno);    if(emptyS==1) strcpy(packet.surname,priezvisko);    if(emptyL==1) strcpy(packet.login,login);    if(emptyF==1) strcpy(packet.faculty,fakulta);    strcpy(mess,"");if (( (strcmp(packet.name, meno)) == 0) &&    ( (strcmp(packet.surname, priezvisko)) == 0) &&    ( (strcmp(packet.login, login)) == 0) &&    ( (strcmp(packet.faculty, fakulta)) == 0)   )    {      if(strchr(packet.mode,'N')!=NULL){strcat(mess,meno); strcat(mess," ");}      if(strchr(packet.mode,'S')!=NULL){strcat(mess,priezvisko); strcat(mess," ");}      if(strchr(packet.mode,'L')!=NULL){strcat(mess,login); strcat(mess," ");}      if(strchr(packet.mode,'F')!=NULL){strcat(mess,fakulta); strcat(mess," ");}      if(write(t, mess, strlen(mess)+1) < 0)   {     fprintf(stderr, "CHYBA : Chyba pri zapisu kontrolniho paketu\n");     return -1;   }  }  //if}// while subor    fclose(f);    close(t); // zavrenie spojenia soketu    exit(0);      }   } //nekonecna smycka na dotaz klientawaitpid(0,NULL,WNOHANG);waitpid(0,NULL,WNOHANG);  return 0;  }