/***** inetserver.c *****/ 
#include <stdlib.h>        /* for getenv */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>    /* Internet domain header */

#define SERVER_PORT  4900
struct sockaddr_in self = {AF_INET, 
                           htonl(SERVER_PORT)};  /* (1) */
int main()
{ int soc, ns, k;
  char buf[256];
  struct sockaddr_in peer = {AF_INET}; 
  int peer_len = sizeof(peer);
  char *host;
  /* set up listening socket soc */
     soc = socket(AF_INET, SOCK_STREAM, 0);
     if (soc < 0)
     {  perror("server:socket"); exit(1);
     }
     if (bind(soc, &self, sizeof(self)) == -1)   /* (2) */
     {  perror("server:bind"); close(soc);
        exit(1); 
     }
     listen(soc, 1);                              /* (3) */
  /* accept connection request */
     ns = accept(soc, &peer, &peer_len);          /* (4) */
     if (ns < 0)
     {  perror("server:accept"); close(soc);
        exit(1);
     }
  /* data transfer on connected socket ns */
     k = read(ns, buf, sizeof(buf));
     host = getenv("HOST");
     printf("SERVER ON %s RECEIVED: %s\n",        /* (5) */
                      host, buf);
     write(ns, buf, k);
     close(ns);   close(soc);
     return(0);
}
/***** end of inetserver.c *****/ 
