home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / ien116-server / driver.c next >
Encoding:
C/C++ Source or Header  |  1987-07-29  |  2.5 KB  |  107 lines

  1. #ifndef lint
  2.   static char *RCSid = "$Header: driver.c,v 1.5 87/06/24 15:02:38 mike Rel $";
  3. #endif
  4.  
  5. /* driver --
  6.    drive the IEN 116 nameserver.
  7.  
  8.    Written by Michael I. Bushnell.
  9.    Copyright (c) 1987 Michael I. Bushnell
  10.    You are hereby granted permission to use this program however you wish, 
  11.    including copying and distribution.  However, you are obligated not to sell
  12.    it or any part of it.  Anyone who obtains this program receives the right
  13.    to do the same.  This statement may not be removed from this program.
  14. */
  15.  
  16. /*
  17.  * $Source: /u1/staff/mike/src/nameserver/RCS/driver.c,v $
  18.  * $Revision: 1.5 $
  19.  * $Date: 87/06/24 15:02:38 $
  20.  * $State: Rel $
  21.  * $Author: mike $
  22.  * $Locker:  $
  23.  * $Log:    driver.c,v $
  24.  * Revision 1.5  87/06/24  15:02:38  mike
  25.  * Prepared for final release.  Added Copyright.
  26.  * 
  27.  * Revision 1.4  87/06/19  17:00:05  mike
  28.  * More toying around.
  29.  * 
  30.  * Revision 1.3  87/06/19  14:44:13  mike
  31.  * Toyed around.
  32.  * 
  33.  * Revision 1.2  87/06/15  13:50:51  mike
  34.  * Changed the host it asks for
  35.  * 
  36.  * Revision 1.1  87/06/12  13:42:29  mike
  37.  * Initial revision
  38.  * 
  39.  */
  40.  
  41. #include <sys/types.h>
  42. #include <sys/socket.h>
  43. #include <netinet/in.h>
  44. #include <stdio.h>
  45. #include <netdb.h>
  46.  
  47. #define PORT 5001
  48. #define BUFLEN 256
  49. char buf[BUFLEN];
  50.  
  51. /* Driver for the IEN 116 nameserver */
  52.  
  53. main()
  54. {
  55.   int sock;            /* Datagram socket */
  56.   struct sockaddr_in from;    /* Where we got the reply from */
  57.   struct sockaddr_in server;    /* Server's address */
  58.   struct sockaddr_in ourname;    /* Our address */
  59.   int addrlen;            /* Address length */
  60.   int c,i;            /* Generic counters */
  61.   
  62.  
  63.   sock = socket(AF_INET, SOCK_DGRAM, 0);
  64.   if (sock < 0)
  65.     {
  66.       perror("driver: opening socket");
  67.       exit (1);
  68.     }
  69.   ourname.sin_family = AF_INET;
  70.   ourname.sin_port = 0;
  71.   ourname.sin_addr.s_addr = INADDR_ANY;
  72.   if (bind(sock, (struct sockaddr *)&ourname, sizeof(ourname)))
  73.     {
  74.       perror("driver: binding socket");
  75.       exit(1);
  76.     }
  77.   
  78.   server.sin_family = AF_INET;
  79.   server.sin_port = PORT;
  80.   server.sin_addr.s_addr = INADDR_ANY;
  81.  
  82. /* stick in whatever machine you want here */
  83.   buf[0] = 1;            /* Code for request */
  84.   buf[1] = 8;            /* Length of message */
  85.   buf[2] = 'c';
  86.   buf[3] = 'h';
  87.   buf[4] = 'a';
  88.   buf[5] = 'r';
  89.   buf[6] = 'o';
  90.   buf[7] = 'n';
  91.  
  92.   if (sendto(sock, buf, 8, 0, (struct sockaddr *)&server, sizeof(server))==-1)
  93.     {
  94.       perror("driver: sending message");
  95.       exit(1);
  96.     }
  97.  
  98.   if ((c=recvfrom(sock, buf, BUFLEN, 0, (struct sockaddr *)&from, sizeof(from)))==-1)
  99.     {
  100.       perror("driver: getting message");
  101.       exit(1);
  102.     }
  103.  
  104.   for(i=0;i<c; ++i)
  105.     putchar(buf[i]);
  106. }
  107.