Advertisement
Alx09

server.c

Jun 22nd, 2022
1,051
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <arpa/inet.h>
  5. #include <string.h>
  6. #include <unistd.h>
  7. #include <stdlib.h>
  8. #include <signal.h>
  9. #include <sys/stat.h>
  10. #define PORT_ID 10001
  11.  
  12. int main(void)
  13. {
  14.    
  15.     int sockid;
  16.       struct sockaddr_in ssock_addr;
  17.     int sizeof_addr = sizeof(ssock_addr);
  18.     struct sockaddr_in client;
  19.     int sizeof_client = sizeof(client);
  20.     char mesaj[1024];
  21.     int nread,delay = 0,status;
  22.  
  23.     bzero((char *)&ssock_addr, sizeof_addr);
  24.     ssock_addr.sin_family = AF_INET;
  25.     ssock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  26.     ssock_addr.sin_port = htons(PORT_ID);
  27.  
  28.     if ((sockid = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
  29.     {
  30.         printf("Eroare socket\n");
  31.         return -1;
  32.     }
  33.  
  34.     if ((bind(sockid, (struct sockaddr *)&ssock_addr, sizeof_addr) < 0))
  35.     {
  36.         printf("Eroare de legatura\n");
  37.         return -1;
  38.     }
  39.     else
  40.         printf("Bind\n");
  41.  
  42.         while(1)
  43.         {
  44.         nread=recvfrom(sockid,&mesaj,sizeof(mesaj),0,(struct sockaddr *) &ssock_addr,&sizeof_addr);
  45.         if(nread<0)
  46.         {
  47.             printf("Error la receptionare mesaj\n");
  48.             return -1;
  49.         }
  50.        
  51.         if(mesaj[0]=='.'&& mesaj[1] == 'd')
  52.         {
  53.             delay = 0;
  54.             status=0;
  55.             for(int i=3;i < strlen(mesaj) -1;i++)
  56.             {
  57.                 if(mesaj[i] < '0'|| mesaj[i] > '9')
  58.                     {   printf("Eroare comanda\n");
  59.                         status = -1;
  60.                         break;
  61.                     }
  62.                 else
  63.                     delay= delay*10 + mesaj[i] - '0';
  64.             }
  65.  
  66.             if(status==0)
  67.             {
  68.                 sendto(sockid,mesaj,sizeof(mesaj),0,(struct sockaddr *) &ssock_addr, sizeof_addr);
  69.                 printf("Delay setat la %d\n",delay);
  70.             }
  71. //Intarziere mai mica ca 0
  72.             else if(status < 0)
  73.                 sendto(sockid,"ERROR",6,0,(struct sockaddr *) &ssock_addr, sizeof_addr);
  74.         }
  75.         else
  76.             {  
  77.                 sleep(delay);
  78.                 sendto(sockid,mesaj,sizeof(mesaj),0,(struct sockaddr *) &ssock_addr, sizeof_addr);
  79.             }
  80.        
  81.     }
  82.         return 0;
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement