/* etcp.h - From Jon C. Snader: Effective TCP/IP Programming * Addison-Wesley 2000 * For better understanding, read the excellent Snader book. */ #ifndef __ETCP_H__ #define __ETCP_H__ /* Include standard headers */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "skel.h" #define TRUE 1 #define FALSE 0 #define NLISTEN 5 /* max waiting connections */ #define NSMB 5 /* number shared memory bufs */ #define SMBUFSZ 256 /* size of shared memory buf */ extern char *program_name; /* Name of current program. Used for error messages */ #ifdef __SVR4 #define bzero(b,n) memset( ( b ), 0, ( n ) ) #endif typedef void ( *tofunc_t )( void * ); /* Useful for casting */ void error( int, int, char*, ... ); int readn( SOCKET, char *, size_t ); int readvrec( SOCKET, char *, size_t ); int readcrlf( SOCKET, char *, size_t ); int readline( SOCKET, char *, size_t ); int tcp_server( char *, char * ); int tcp_client( char *, char * ); int udp_server( char *, char * ); int udp_client( char *, char *, struct sockaddr_in * ); int tselect( int, fd_set *, fd_set *, fd_set *); unsigned int timeout( tofunc_t, void *, int ); void untimeout( unsigned int ); void init_smb( int ); void *smballoc( void ); void smbfree( void * ); void smbsend( SOCKET, void * ); void *smbrecv( SOCKET ); void set_address( char *, char *, struct sockaddr_in *, char * ); #endif /* __ETCP_H__ */