Advertisement
4doorsmorehories

Stop and Wait Client

Apr 18th, 2023
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. #include <arpa/inet.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #include <sys/socket.h>
  6. #include <unistd.h>
  7. #define PORT 8080
  8.  
  9. void transfer(int sock){
  10.  
  11.       int *n,i,e=0,c=0,k=0;
  12.       n=&i;
  13.       printf("Expect\tFrame status\tACK status");
  14.      while((read(sock,n,sizeof(i)))!=0){
  15.      c++;
  16.           if(c==7){
  17.             continue;
  18.           }
  19.           printf("\n%d\t Frame no:%d\t",k,i);
  20.           if(e==i){
  21.           i=(i+1)%2;
  22.           e=i;
  23.          
  24.           printf("ACK no:%d",i);
  25.           write(sock,n,sizeof(i));
  26.           k++;
  27.           }
  28.           else{
  29.             printf("Wrong frame");
  30.           }
  31.       }
  32.    
  33. }
  34.  
  35. int main(int argc, char const* argv[])
  36. {
  37.     int sock = 0, valread, client_fd,n;
  38.     struct sockaddr_in serv_addr;
  39.     char str[5];
  40.     char buffer[1024] = { 0 };
  41.     if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  42.         printf("\n Socket creation error \n");
  43.         return -1;
  44.     }
  45.  
  46.     serv_addr.sin_family = AF_INET;
  47.     serv_addr.sin_port = htons(PORT);
  48.  
  49.     // Convert IPv4 and IPv6 addresses from text to binary
  50.     // form
  51.     if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)
  52.         <= 0) {
  53.         printf(
  54.             "\nInvalid address/ Address not supported \n");
  55.         return -1;
  56.     }
  57.  
  58.     if ((client_fd
  59.         = connect(sock, (struct sockaddr*)&serv_addr,
  60.                 sizeof(serv_addr)))
  61.         < 0) {
  62.         printf("\nConnection Failed \n");
  63.         return -1;
  64.     }
  65.  
  66.      
  67.         transfer(sock);
  68.     // closing the connected socket
  69.     close(client_fd);
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement