home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / maestro / tests / pngpptst.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-15  |  2.8 KB  |  80 lines

  1. #include <stdio.h>
  2. #include <Sender.h>
  3. #include <Receiver.h>
  4. #include <sys/socket.h>
  5. #include <errno.h>
  6.  
  7. /* This program is intended to test if another application as still "alive".
  8.    It takes two arguments:  the hostName on which the remote application is
  9.    supposed to be, and the portNumber on which that application should be
  10.    listening.
  11.  
  12.    Written by George Drapeau on September 13th, 1990
  13. */
  14.  
  15.  
  16. main(int argc, char** argv)
  17. {
  18.   Sender*    sender;
  19.   Sender*    sender1;
  20.   Receiver*    receiver;
  21.   Selection    select;
  22.   Selection    select1;
  23.   Port        senderPort, testPort;
  24.   char*        filename;
  25.   int        result = 0;
  26.   struct sockaddr    peerStruct;
  27.   int        peerLength;
  28.   
  29.   select.start = 2;
  30.   select.end = 2;
  31.   printf("Starting the test.\n");
  32.   printf("Port number to connect to is %d.\n",atoi(argv[2]));
  33.   senderPort.hostName = argv[1];                    /* Get hostname passed in as argument */
  34.   senderPort.portNumber = PortMgrPortNumber;
  35.   sender = NewSender(&senderPort);                    /* Create a Sender to communicate with the Port Manager */
  36.   receiver = NewReceiver(sender,argv[0],AnyPort);            /* Register with the Port Manager */
  37.   printf("Connected with the Port Manager.\n");
  38.   
  39.   testPort.hostName = argv[1];                        /* Get the hostname passed in as argument  */
  40.   testPort.portNumber = atoi(argv[2]);                    /* Get the port number for the remote app being tested for */
  41.   sender1 = NewSender(&testPort);                    /* Create a new Sender to send messages to the remote app. */
  42.   SenderGetCurrentDocName(sender1, &filename);                /* Send a message to the remote app */
  43.   printf ("now out of get current doc \n");                /* Print the results of the message */
  44.   printf ("current doc = %s\n", filename);
  45.   
  46.   peerLength = sizeof(peerStruct);
  47.   result = getpeername(sender1->clientSocket,&peerStruct,        /* Use "getpeername()" to see if the remote app is "alive" */
  48.                &peerLength);
  49.   if (result == -1)                            /* Did the getpeername() call succeed? */
  50.     {                                    /* No, print an error message and exit */
  51.     printf("Remote app doesn't seem to be running.\n");
  52.     switch(errno)
  53.       {
  54.     case EBADF:
  55.       printf("EBADF error.\n");
  56.     break;
  57.     case EFAULT:
  58.       printf("EFAULT error.\n");
  59.       break;
  60.     case ENOBUFS:
  61.       printf("ENOBUFS error.\n");
  62.       break;
  63.     case ENOTCONN:
  64.       printf("ENOTCONN error.\n");
  65.       break;
  66.     case ENOTSOCK:
  67.       printf("ENOTSOCK error.\n");
  68.       break;
  69.       }                                    /* end switch */
  70.     SenderDisconnectFromPortMgr(sender,&(receiver->receivePort));   /* Disconnect from the Port Manager */
  71.     exit(result);
  72.     }
  73.   else
  74.     {                                    /* Yes, print a success message and exit */
  75.     printf("Remote app seems to be running okay.\n");
  76.     SenderDisconnectFromPortMgr(sender,&(receiver->receivePort));   /* Disconnect from the Port Manager */
  77.     exit(result);
  78.     }
  79. }
  80.