Advertisement
Bewin

SnW_receiver

Mar 24th, 2025
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.06 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <sys/socket.h>
  4. #include <arpa/inet.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7.  
  8. int main(void)
  9. {
  10.     int socket_desc, client_sock, client_size;
  11.     struct sockaddr_in server_addr, client_addr;
  12.     char buffer[1024];              //for snw
  13.     int k=5,m=1,p;                    //for snw
  14.    
  15.    
  16.     // Create socket:
  17.     socket_desc = socket(AF_INET, SOCK_STREAM, 0);
  18.    
  19.     if(socket_desc < 0){
  20.         printf("Error while creating socket\n");
  21.         return -1;
  22.     }
  23.     printf("Socket created successfully\n");
  24.    
  25.     // Set port and IP:
  26.     server_addr.sin_family = AF_INET;
  27.     server_addr.sin_port = htons(2000);
  28.     server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  29.    
  30.     // Bind to the set port and IP:
  31.     if(bind(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr))<0){
  32.         printf("Couldn't bind to the port\n");
  33.         return -1;
  34.     }
  35.     printf("Done with binding\n");
  36.    
  37.     // Listen for clients:
  38.     if(listen(socket_desc, 1) < 0){
  39.         printf("Error while listening\n");
  40.         return -1;
  41.     }
  42.     printf("\nListening for incoming connections.....\n");
  43.    
  44.     // Accept an incoming connection:
  45.     client_size = sizeof(client_addr);
  46.     client_sock = accept(socket_desc, (struct sockaddr*)&client_addr, &client_size);
  47.    
  48.     if (client_sock < 0){
  49.         printf("Can't accept\n");
  50.         return -1;
  51.     }
  52.     printf("Client connected at IP: %s and port: %i\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  53.    
  54.     while(k!=0)    //demo for 5 packets
  55.     {
  56.                    int y = recv(client_sock,buffer,1024,0);
  57.                    if(y==-1)
  58.                    {
  59.                             printf("Error in receiving");
  60.                             exit(1);
  61.                    }
  62.                    if(strncmp(buffer,"frame",5)==0)
  63.                          printf("Received frame %d successfully\n",m);
  64.                    else
  65.                        printf("Frame %d not received\n",m);
  66.                    if(m%2==0)
  67.                              strcpy(buffer,"ack");
  68.                    else
  69.                    {
  70.                              strcpy(buffer,"kca");
  71.                              printf("Ack lost\n");
  72.                              for(p=1;p<=3;p++)
  73.                              {
  74.                                 printf("Waiting for %d seconds\n",p);
  75.                              }
  76.                              printf("Retransmitting ack...\n");
  77.                              strcpy(buffer,"ack");
  78.                              sleep(3);
  79.                    }
  80.                    printf("sending ack %d\n",m);
  81.                    int z= send(client_sock, buffer,19,0);
  82.                    if(z==-1)
  83.                    {
  84.                             printf("Error in sending");
  85.                             exit(1);
  86.                    }
  87.                    k--;
  88.                    m++;
  89.     }                      
  90.     // Closing the socket:
  91.     close(client_sock);
  92.     close(socket_desc);
  93.    
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement