aspirinus

pkg test

Jun 20th, 2012
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.35 KB | None | 0 0
  1. #include "test_shared.h"
  2.  
  3. #include <stdio.h>
  4. #include <sys/ioctl.h>
  5.  
  6. int main()
  7. {
  8.     pid_t child = fork();
  9.  
  10.     if (0 != child)
  11.     {
  12.         int server;
  13.         int clifd;
  14.         struct cli_info ci;
  15.         char buf[DEFAULT_PKG_SIZE];
  16.         int rc;
  17.         pkg_t pkg;
  18.  
  19.         server = server_create_socket(DEFAULT_PORT);
  20.         if (!server)
  21.             return 1;
  22.  
  23.         if (!server_listen(server, 1))
  24.             return 1;
  25.  
  26.         clifd = server_accept(server, &ci);
  27.  
  28.         if (clifd)
  29.         {
  30.             printf("A new client connected!\n");
  31.             printf("| addr   = %d\n", ci.addr);
  32.             printf("| addr_s = %s\n", ci.addr_s);
  33.             printf("| port   = %d\n", ci.port);
  34.  
  35.             pkg = pkg_create(Data, 0);
  36.             sock_receive_pkg(clifd, pkg);
  37.  
  38.             printf("pkg->header = {type:%d, id:%d, len:%d}\n",
  39.                    pkg->header.type,
  40.                    pkg->header.id,
  41.                    pkg->header.len);
  42.  
  43.             printf("Message from client:\n");
  44.             rc = (int)(*pkg->data);
  45.             printf("received %d bytes since last package\n", rc);
  46.             fflush(stdout);
  47.             printf("| %d\n", rc);
  48.             printf("received %d bytes since last package\n", rc);
  49.             fflush(stdout);
  50.             free(pkg);
  51.  
  52.             printf("received %d bytes since last package\n", rc);
  53.             fflush(stdout);
  54.             rc = read(clifd, buf, 100);
  55.             printf("received %d bytes since last package\n", rc);
  56.             fflush(stdout);
  57.             //if (rc <= 0)
  58.             //    client_disconnect(clifd);
  59.             //sock_receive_pkg(clifd, pkg);
  60.             //close(clifd);
  61.         }
  62.  
  63.         server_stop(server);
  64.         printf("server stopped\n");
  65.  
  66.         return 0;
  67.     }
  68.     else if (0 == child)
  69.     {
  70.         int client = client_create_socket(DEFAULT_IP, DEFAULT_PORT, 0);
  71.         pkg_t pkg = pkg_create(Data, 0);
  72.         int attempts = 10;
  73.  
  74.         while (!client_connect(client, DEFAULT_IP, DEFAULT_PORT) && attempts--);
  75.         pkg_push_int(pkg, 10);
  76.         printf("client sended %d bytes\n", sock_send_pkg(client, pkg));
  77.         client_disconnect(client);
  78.         free(pkg);
  79.         printf("client disconnected\n");
  80.  
  81.         return 0;
  82.     }
  83.     else
  84.     {
  85.         perror("fork");
  86.         return 1;
  87.     }
  88.  
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment