Advertisement
patryk

SK - 15.10.2015

Oct 15th, 2015
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.91 KB | None | 0 0
  1. ############################################################################
  2. ###########     PROGRAM 1
  3.  
  4. #include <stdio.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #include <netdb.h>
  9. #include <stdlib.h>
  10. #include <unistd.h>
  11. #include <string.h>
  12. #include <arpa/inet.h>
  13.  
  14. #define BUFSIZE 10000
  15.    
  16. char bufor[BUFSIZE];
  17.  
  18. char *service = "daytime";
  19. char *protocol = "tcp";
  20.  
  21. int main (int argc, char** argv) {
  22.    
  23.     struct sockaddr_in  sck_addr;
  24.     struct hostent      *host_ptr;
  25.     struct protoent     *protocol_ptr;
  26.     struct servent      *service_ptr;
  27.  
  28.     int sck, odp;
  29.    
  30.     if (argc < 2) {
  31.         printf ("Podaj nazwę serwera\n");
  32.         exit (EXIT_FAILURE);   
  33.     }
  34.  
  35.     printf ("Usługa %d na %s z serwera %s :\n", service, protocol, argv[1]);
  36.     fflush(stdout);
  37.  
  38.     if ((host_ptr = gethostbyname (argv[1])) == NULL) {
  39.         perror("Nie znaleziono serwera");
  40.         exit(EXIT_FAILURE);
  41.     }
  42.  
  43.     if ((protocol_ptr = getprotobyname (protocol)) == NULL) {
  44.         perror ("Nie znaleziono protokołu");
  45.         exit(EXIT_FAILURE);
  46.     }
  47.  
  48.     if ((service_ptr = getservbyname (service, protocol)) == NULL) {
  49.         perror ("Nie znaleziono uslugi");
  50.         exit(EXIT_FAILURE);
  51.     }
  52.  
  53.     memset (&sck_addr, 0, sizeof sck_addr);
  54.     sck_addr.sin_family = host_ptr -> h_addrtype;
  55.     memcpy ((char*) &sck_addr.sin_addr, (char*) host_ptr -> h_addr, host_ptr -> h_length);
  56.     sck_addr.sin_port = service_ptr ->s_port;
  57.  
  58.     if ((sck = socket (PF_INET, SOCK_STREAM, protocol_ptr -> p_proto)) < 0) {
  59.         perror ("Nie można utworzyć gniazdka");
  60.         exit (EXIT_FAILURE);
  61.     }
  62.  
  63.     if (connect (sck, (struct sockaddr*) &sck_addr, sizeof sck_addr) < 0) {
  64.         perror ("Brak połączenia");
  65.         exit (EXIT_FAILURE);
  66.     }
  67.  
  68.     while ((odp = read (sck, bufor, BUFSIZE)) > 0)
  69.         write (1, bufor, odp);
  70.     close (sck);
  71.  
  72.     exit (EXIT_SUCCESS);
  73. }
  74.  
  75.  
  76. ################################################################################
  77. ############   PROGRAM 2
  78.  
  79. #include <stdio.h>
  80. #include <sys/types.h>
  81. #include <sys/socket.h>
  82. #include <netinet/in.h>
  83. #include <netdb.h>
  84. #include <stdlib.h>
  85. #include <unistd.h>
  86. #include <string.h>
  87. #include <arpa/inet.h>
  88.  
  89. #define BUFSIZE 10000
  90.    
  91. char bufor[BUFSIZE];
  92.  
  93. char *service = "echo";
  94. char *protocol = "tcp";
  95.  
  96. int main (int argc, char** argv) {
  97.    
  98.     struct sockaddr_in  sck_addr;
  99.     struct hostent      *host_ptr;
  100.     struct protoent     *protocol_ptr;
  101.     struct servent      *service_ptr;
  102.  
  103.     int sck, odp;
  104.     char message[1000], server_reply[2000];
  105.    
  106.     if (argc < 2) {
  107.         printf ("Podaj nazwę serwera\n");
  108.         exit (EXIT_FAILURE);   
  109.     }
  110.  
  111.     printf ("Usługa %d na %s z serwera %s :\n", service, protocol, argv[1]);
  112.     fflush(stdout);
  113.  
  114.     if ((host_ptr = gethostbyname (argv[1])) == NULL) {
  115.         perror("Nie znaleziono serwera");
  116.         exit(EXIT_FAILURE);
  117.     }
  118.  
  119.     if ((protocol_ptr = getprotobyname (protocol)) == NULL) {
  120.         perror ("Nie znaleziono protokołu");
  121.         exit(EXIT_FAILURE);
  122.     }
  123.  
  124.     if ((service_ptr = getservbyname (service, protocol)) == NULL) {
  125.         perror ("Nie znaleziono uslugi");
  126.         exit(EXIT_FAILURE);
  127.     }
  128.  
  129.     memset (&sck_addr, 0, sizeof sck_addr);
  130.     sck_addr.sin_family = host_ptr -> h_addrtype;
  131.     memcpy ((char*) &sck_addr.sin_addr, (char*) host_ptr -> h_addr, host_ptr -> h_length);
  132.     sck_addr.sin_port = service_ptr ->s_port;
  133.  
  134.     if ((sck = socket (PF_INET, SOCK_STREAM, protocol_ptr -> p_proto)) < 0) {
  135.         perror ("Nie można utworzyć gniazdka");
  136.         exit (EXIT_FAILURE);
  137.     }
  138.  
  139.     if (connect (sck, (struct sockaddr*) &sck_addr, sizeof sck_addr) < 0) {
  140.         perror ("Brak połączenia");
  141.         exit (EXIT_FAILURE);
  142.     }
  143.  
  144.     while (1) {
  145.         printf("\nWiadomość przesyłana: ");
  146.         fflush(stdout);
  147.         gets(message);
  148.  
  149.         if (send(sck, message, strlen(message), 0) < 0) {
  150.             perror ("Nie mozna wyslac");
  151.             exit (EXIT_FAILURE);
  152.         }
  153.         bzero(server_reply, 2000);
  154.         if ( recv(sck, server_reply, 2000, 0) < 0) {
  155.             perror("Nie mozna odebrac");
  156.             exit (EXIT_FAILURE);
  157.         }
  158.         printf("Wiadomość zwracana: ");
  159.         printf(server_reply);
  160.         fflush(stdout);
  161.     }
  162.        
  163.     close (sck);
  164.  
  165.     exit (EXIT_SUCCESS);
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement