home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / unix / programm / 5178 < prev    next >
Encoding:
Text File  |  1992-11-06  |  1.9 KB  |  58 lines

  1. Newsgroups: comp.unix.programmer
  2. Path: sparky!uunet!rsiatl!karl
  3. From: karl@dixie.com (Karl Klingman)
  4. Subject: Re: Socket Programming Help
  5. Message-ID: <1h_qdmj@dixie.com>
  6. Date: Thu, 05 Nov 92 14:20:45 GMT
  7. Organization: Dixie Communications Public Access.  The Mouth of the South.
  8. References: <1992Nov4.143004.22495@nuscc.nus.sg>
  9. Lines: 47
  10.  
  11. scstech@solomon.technet.sg (Kenneth Soh) writes:
  12.  
  13.  
  14. >I guess the problem is in the use of accept() but I don't
  15. >understand want actually went wrong. Below is my "program":
  16.  
  17. >------------------------------------------------------
  18. /* OK here you go */
  19. /* I changed your reference to sin to srvaddr for clarity */
  20.  
  21. struct sockaddr_in srvaddr, cliaddr;
  22.  
  23. >universal_socket = socket( AF_INET, SOCK_STREAM, 0 );
  24.  
  25. >srvaddr.sin_family = AF_INET;
  26. >srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);  <- NOTE htonl
  27. >srvaddr.sin_port = htons(atoi(argv[1])); <--  NOTE htons
  28. /* note cast below */
  29. >bind( universal_socket,(struct sockaddr *) &srvaddr, sizeof( srvaddr ) )
  30.  
  31. >listen( universal_socket, 3 ); <- NOTE: normally one would use 5 (max)
  32.  
  33. for (;;) {
  34.     /*    >client_socket = accept( universal_socket, 0, 0 ); <- nope */
  35.     clilen = sizeof(cliaddr);   <- you'll need this below 
  36.     /* notice that the 2nd and 3rd arguments must be an addresses */
  37.     client_socket = accept(universal_socket, (struct sockaddr *) &cli_addr, 
  38.                     &clilen);
  39.     /* check to see if client_socket is valid */
  40.     /* fork */
  41.     /* check for successful fork */
  42.     if (childpid == 0) {    /* child process */
  43.         close(universal_socket);
  44.         /* do your stuff here */
  45.         close(client_socket);  /* optional since exit will do it */
  46.         exit(0);
  47.     } else {    /* parent */
  48.         close(client_socket);
  49.     }
  50. } /* for */
  51. >------------------------------------------------------
  52.  
  53. I hope this helps.
  54. -- 
  55. He who would trade his liberty for  |  Karl Klingman
  56. short-term security deserves        |  American Research Group, Inc.
  57. neither...   Ben Franklin           |  emory!slammer!arg!karl
  58.