home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / ccs / ccs-11tl.lha / lbl / lib / sock_subr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-02  |  1.9 KB  |  88 lines

  1. /*    socket_subr . c
  2. #
  3. %    Copyright (c)    Jin Guojun
  4. %
  5. %    Scoket subroutines
  6. %
  7. % AUTHOR:    Jin Guojun - LBL    01/01/93
  8. */
  9.  
  10. #include <sys/file.h>
  11. #include "net_need.h"
  12.  
  13. short
  14. get_addr(char* host, long* addr_op)
  15. {
  16. short    family=AF_INET;
  17. union    {
  18.     long    i;
  19.     unsigned char    c[4];
  20. } addr;
  21. if (isdigit(*host))    {
  22. #ifdef    NO_INET
  23. int    a[4];
  24.     sscanf(host, "%d.%d.%d.%d", a, a+1, a+2, a+3);
  25.     addr.c[0] = a[0], addr.c[1] = a[1], addr.c[2] = a[2], addr.c[3] = a[3];
  26.     *addr_op = addr.i;
  27.     message("IP => %d.%d.%d.%d\n", a[0], a[1], a[2], a[3]);
  28. #else
  29.     *addr_op = inet_addr(host);
  30. #endif
  31. }
  32. else    {
  33. struct    hostent    *h_p;    /* host ptr */
  34.     if ((h_p=gethostbyname(host)) == NULL)
  35.         syserr("? host %s", host);
  36.     memcpy(addr_op, h_p->h_addr_list[0], h_p->h_length);
  37.     family = h_p->h_addrtype;
  38. }
  39. #ifdef    _DEBUG_
  40.     message("IP = %s\n", inet_ntoa(addr_op));
  41. #endif
  42. return    family;
  43. }
  44.  
  45. unsigned short
  46. get_port(char* s_name, bool udp)
  47. {
  48. register unsigned short    port;
  49. if (isdigit(*s_name))    port = atoi(s_name);
  50. else    {
  51. struct    servent    *s_p;
  52.     if (!(s_p = getservbyname(s_name, udp ? "udp" : "tcp")))
  53.         syserr("? server %s", s_name);
  54.     port = s_p->s_port;
  55. }
  56. return    htons(port);
  57. }
  58.  
  59.  
  60. s_buf_size(int s, int buf_size)
  61. {
  62. int    n;
  63. #ifdef    _DEBUG_
  64. int    o_test, test;
  65.     n = sizeof(test);
  66.     n = getsockopt(s, SOL_SOCKET, SO_RCVBUF, &o_test, &n);
  67. #endif
  68.     if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, &buf_size,
  69.         sizeof(buf_size) ) < 0)
  70.         prgmerr(1, "sockbuf size %d", buf_size);
  71. #ifdef    _DEBUG_
  72.     n = sizeof(test);
  73.     n = getsockopt(s, SOL_SOCKET, SO_RCVBUF, &test, &n);
  74.     message("recv size from %d to %d [%d]\n", o_test, test, n);
  75.  
  76.     n = sizeof(test);
  77.     n = getsockopt(s, SOL_SOCKET, SO_SNDBUF, &o_test, &n);
  78. #endif
  79.     if (setsockopt(s,SOL_SOCKET,SO_SNDBUF, &buf_size,
  80.         sizeof(buf_size) ) < 0)
  81.         prgmerr(1, "sockbuf size %d", buf_size);
  82. #ifdef    _DEBUG_
  83.     n = sizeof(test);
  84.     n = getsockopt(s,SOL_SOCKET,SO_SNDBUF, &test, &n);
  85.     message("send size from %d to %d [%d]\n", o_test, test, n);
  86. #endif
  87. }
  88.