Advertisement
eElec

9s.c

Nov 8th, 2020
1,632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/socket.h>
  5. #include <sys/types.h>
  6. #include <arpa/inet.h>
  7. #include <math.h>
  8.  
  9. struct Array{
  10.     int arr[50];
  11.     int size;
  12. };
  13.  
  14. void main(){
  15.     int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  16.     if(sockfd == -1){
  17.         exit(1);
  18.     }
  19.     struct sockaddr_in addr;
  20.     addr.sin_family = AF_INET;
  21.     addr.sin_port = htons(8080);
  22.     addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  23.     int addrsize = sizeof(addr);
  24.  
  25.     if(bind(sockfd, (struct sockaddr *) &addr, sizeof(addr)) == -1){
  26.         exit(1);
  27.     }
  28.  
  29.     if(listen(sockfd, 5) == -1){
  30.         exit(1);
  31.     }
  32.  
  33.     int recvfd = accept(sockfd, (struct sockaddr *)&addr, &addrsize);
  34.     if(recvfd == -1){
  35.         exit(1);
  36.     }
  37.  
  38.     struct Array inp;
  39.     int r = recv(recvfd, (struct Array *)&inp, sizeof(inp), 0);
  40.  
  41.     for(int i=0; i<inp.size/2; i++){
  42.         int a = inp.arr[i*2];
  43.         int b = inp.arr[i*2 + 1];
  44.  
  45.         a %= (int)pow(10.0, i+1);
  46.         a /= (int)pow(10.0, i);
  47.         a *= (int)pow(10.0, i);
  48.  
  49.         b %= (int)pow(10.0, i+1);
  50.         b /= (int)pow(10.0, i);
  51.         b *= (int)pow(10.0, i);
  52.  
  53.         if(a > b){
  54.             inp.arr[i*2] -= (a-b);
  55.             inp.arr[i*2+1] += (a-b);
  56.         }
  57.         else{
  58.             inp.arr[i*2] -= (a-b);
  59.             inp.arr[i*2+1] += (a-b);
  60.         }
  61.     }
  62.  
  63.     send(recvfd, (struct Array *)&inp, sizeof(inp), 0);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement