www.pudn.com > dos-SDK.rar > SOCKET.H


/*      COPYRIGHT, (c) HEWLETT PACKARD CO. 1990,1991 */ 
/*      All rights reserved. No part of this program */ 
/*      may be copied or used without the express    */ 
/*      written consent of HEWLETT PACKARD Corp.     */ 
/* 
**      SOCKET.H 
** 
**      (c) Copyright 1988, The Regents of the University of California. 
** 
**      Copyright (c) Hewlett Packard Company, 1989.  All rights reserved. 
**      No part of this program may be copied or used without the prior 
**      written consent of Hewlett Packard Company. 
*/ 
 
 
/* 
**   Parameters 
*/ 
 
#define MAXHOSTNAMELEN  17       /* 16 character name + null terminator  */ 
 
#define MAX_SOCKETS     64       /* Maximum number of sockets supported. */ 
                                 /* This should NOT be changed by the    */ 
                                 /* user to enable more sockets.  The    */ 
                                 /* sockets libraries have been compiled */ 
                                 /* with this value and altering it      */ 
                                 /* would cause sockets failures.        */ 
 
#define SOL_SOCKET      0xffff   /* level for get/setsockopt() calls     */ 
 
 
 
/* 
**   linger structure for get/setsockopt(), timeval structure for select() 
*/ 
 
struct linger { 
    int l_onoff; 
    int l_linger; 
}; 
 
struct timeval { 
    unsigned long tv_sec; 
    unsigned long tv_usec; 
}; 
 
 
/* 
**   defines, types required for select() 
*/ 
 
#define RM_OFFSET(n)  (n & 0x00ff) 
#define ADD_OFFSET(n) (n | 0x0100) 
#define MASK_BYTES    ((MAX_SOCKETS / 8) + (MAX_SOCKETS % 8 == 0 ? 0 : 1)) 
 
#define FD_SET(n,p)  ((p)->mask[(RM_OFFSET(n))/8] |= (1 << (RM_OFFSET(n)) % 8)) 
#define FD_CLR(n,p)  ((p)->mask[(RM_OFFSET(n))/8] &= ~(1 << (RM_OFFSET(n)) % 8)) 
#define FD_ISSET(n,p) ((p)->mask[(RM_OFFSET(n))/8] & (1 << (RM_OFFSET(n)) % 8)) 
#define FD_ZERO(p)                                       \ 
        {                                                \ 
        int _loopct;                                     \ 
        for(_loopct=0;_loopctmask[_loopct]=0;                         \ 
        }                                                \ 
        }                                                          
 
typedef struct { char mask[MASK_BYTES]; } fd_set; 
 
 
/*  
**   Socket types supported 
*/ 
 
#define SOCK_STREAM     1            /* stream sockets interface */ 
#define SOCK_DGRAM      2            /* datagram sockets interface */ 
 
/* 
**   socket options 
*/ 
 
#define SO_DEBUG        0x01         /* turn on debugging info */ 
                                     /* don't allocate 0x02 for an option */ 
#define SO_REUSEADDR    0x04         /* allow local address reuse */ 
#define SO_KEEPALIVE    0x08         /* keep connections alive */ 
#define SO_DONTROUTE    0x10 
#define SO_TYPE         0x20         /* used for getsockopt() */ 
#define SO_LINGER       0x80         /* linger on close if data present */ 
 
#define SO_PROCESS_ID   0x0100       /* used to transfer socket ownership */ 
 
#define SO_DONTLINGER   (~SO_LINGER) 
 
 
/* 
**   Only flags supported for send(), recv() families 
*/ 
 
#define MSG_PEEK        0x02 
#define MSG_PUSH        0x04 
 
 
/* 
**  Only ioctl flags supported 
*/ 
 
#define FIONBIO        0x0001 
#define FIONREAD       0x0002 
 
 
/* 
**  address families supported 
*/ 
 
#define AF_UNSPEC       0 
#define AF_INET         2 
 
 
/* 
**  Maximum queue length (aka backlog) that may be specified by listen() 
*/ 
 
#define SOMAXCONN       5 
 
struct sockaddr { 
    unsigned short sa_family;       /* address family */ 
    char sa_data[14];               /* up to 14 bytes for general address use*/ 
}; 
 
struct sockproto { 
    unsigned short sp_family;       /* address family */ 
    unsigned short sp_protocol;     /* protocol */ 
}; 
 
/* The following is included because C6.0 requires that structures be 
** defined before referenced. addr_in is referenced in the function  
** prototypes include below.  It is defined in netinet\in.h.   The  
** conditional compilation in this file and in netinet\in.h allows 
** these files to be included in any order. */ 
 
#ifndef IN_ADDR_DEFINE 
#define IN_ADDR_DEFINE 
struct in_addr { 
    union { 
        struct { unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b; 
        struct { unsigned short s_w1, s_w2; } S_un_w; 
        unsigned long S_addr; 
    } S_un; 
}; 
#endif  
 
#ifdef SOCK_WIN_DLL 
    #define  HOST_INFO_SIZE   420 
    #define  NET_INFO_SIZE    200 
    #define  PROTO_INFO_SIZE  200 
    #define  SERV_INFO_SIZE   200 
    #define  IPADDR_STR_LEN   20 
/* pkb used 100 because thats what it is in lib_incl.h */ 
    #define  ASCII_DB_PATH_LEN   100 
 
    #include  
 
#elif defined WSOCKETS_DLL 
    #include  
 
#else 
    #include  
#endif