Advertisement
Raviqa

PerforkingClient

Jun 17th, 2020
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. //Nama : Raviqa Sandra Putri
  2. //Nim : 1856401009
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <sys/types.h>
  7. #include <sys/socket.h>
  8. #include <netinet/in.h>
  9.  
  10. void child_funch(int childnum);
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14. int nchildren = 1;
  15. int pid;
  16. int x;
  17.  
  18.     if (argc > 1) {
  19.         nchildren = atoi(argv[1]);
  20.     }
  21.  
  22.     for (x=0; x < nchildren; x++) {
  23.     if ((pid = fork()) == 0) {
  24.         child_funch(x + 1);
  25.         exit(0);
  26.         }
  27.     }
  28.     wait(NULL);
  29.     return 0;
  30. }
  31.  
  32. void child_func(int childnum)
  33. {
  34.     int sock;
  35.     struct sockaddr_in sAddr;
  36.     char buffer[25];
  37.     int x;
  38.  
  39.     sAddr.sin_family = AF_INET;
  40.     sAddr.sin_addr.s_addr = INADDR_ANY;
  41.     sAddr.sin_port = 0;
  42.  
  43.  
  44.     sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  45.     bind(sock, (const struct sockaddr *) &sAddr, sizeof(sAddr));
  46.  
  47.     sAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
  48.     sAddr.sin_port = htons(1972);
  49.  
  50.     if (connect(sock, (const struct sockaddr *) &sAddr, sizeof(sAddr)) != 0){
  51.         perror("client");
  52.         return;
  53.     }
  54.     snprintf(buffer, 128, "data from client #%i.", childnum);
  55.     sleep(1);
  56.     printf("child #%i sent %i chars\n", childnum, send(sock, buffer, strlen(buffer), 0));
  57.     sleep(1);
  58.     printf("child #%i received %i chars\n", childnum, recv(sock, buffer, 25, 0));
  59.     sleep(1);
  60.  
  61. close(sock);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement