?? net.h
字號:
/*
* net.h,v 1.3 2000/06/04 22:00:03 brunsch Exp
*
* Copyright (c) 1994, 1995. Netscape Communications Corporation. All
* rights reserved.
*
* Use of this software is governed by the terms of the license agreement for
* the Netscape Communications or Netscape Comemrce Server between the
* parties.
*/
/* ------------------------------------------------------------------------ */
/*
* net.h: system specific networking definitions
*
* Rob McCool
*/
#ifndef NET_H
#define NET_H
#include "systems.h"
#include "file.h" /* for client file descriptors */
#include "pblock.h" /* for client data block */
/* This should be a user-given parameter later */
#define NET_BUFFERSIZE 8192
/* So should this. */
#define NET_READ_TIMEOUT 120
#define NET_WRITE_TIMEOUT 300
#define SSL_HANDSHAKE_TIMEOUT 300
#if defined(NET_SOCKETS) || defined(NET_SSL)
#ifdef NET_WINSOCK
#include <winsock.h>
#else /* XP_UNIX */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> /* sockaddr and in_addr */
#include <arpa/inet.h> /* inet_ntoa */
#include <netdb.h> /* hostent stuff */
#endif /* NET_WINSOCK */
#ifdef NET_SSL
#include "minissl.h"
#endif
/* -------------------------------- Global -------------------------------- */
extern int net_enabledns;
/* ------------------------------ Data types ------------------------------ */
#ifdef NET_WINSOCK
typedef SOCKET SYS_NETFD;
#else /* XP_UNIX */
typedef int SYS_NETFD;
#endif /* NET_WINSOCK */
#define SYS_NET_ERRORFD -1
/* -------------------------------- Macros -------------------------------- */
/* These may be different for non-UNIX systems. */
#ifndef NET_SSL
#define net_socket socket
#define net_setsockopt setsockopt
#define net_getsockopt getsockopt
#define net_listen listen
#define net_select select
#define net_getpeername getpeername
#ifndef NET_WINSOCK
#define net_close(sd) close(sd)
#define net_bind bind
#else /* NET_WINSOCK */
#define net_close(sd) closesocket(sd)
#define system_netbind bind
int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen);
#endif /* NET_WINSOCK */
#ifdef DAEMON_NEEDS_SEMAPHORE
#define net_accept net_semaccept
#else /* ! DAEMON_NEEDS_SEMAPHORE */
#define net_accept accept
#endif /* DAEMON_NEEDS_SEMAPHORE */
#else /* NET_SSL */
#define net_close(sd) SSL_Close(sd)
#define net_socket SSL_Socket
#define net_setsockopt SSL_SetSockOpt
#define net_getsockopt SSL_GetSockOpt
#ifdef XP_UNIX
#define net_bind SSL_Bind
#else /* WIN32 */
#define system_netbind SSL_Bind
int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen);
#endif /* XP_UNIX */
#define net_listen SSL_Listen
#define net_select select /* !!! */
#define net_getpeername SSL_GetPeerName
#define net_accept SSL_Accept
#endif /* ! NET_SSL */
/* Users should never call the system_net* functions. */
#ifdef NET_SSL
#define system_netread(sd, buf, sz) SSL_Read(sd, buf, sz)
#define system_netwrite SSL_Write
#else /* ! NET_SSL */
#if !defined(NET_WINSOCK)
#define system_netread(sd, buf, sz) read(sd, buf, sz)
#define system_netwrite write
#else /* NET_WINSOCK */
#define system_netread(sd, buf, sz) recv(sd, buf, sz, 0)
#define system_netwrite(sd, buf, sz) send(sd, buf, sz, 0)
#endif /* ! NET_WINSOCK */
#endif /* NET_SSL */
int net_read(SYS_NETFD sd, char *buf, int sz, int timeout);
int net_write(SYS_NETFD sd, char *buf, int sz);
#ifdef DAEMON_NEEDS_SEMAPHORE
int net_semaccept_init(int port);
int net_semaccept(int s, struct sockaddr *addr, int *addrlen);
void net_semaccept_terminate(void);
#endif
/* ------------------------------ Prototypes ------------------------------ */
/*
* net_find_fqdn looks through the given hostent structure trying to find
* a FQDN for the host. If it finds none, it returns NULL. Otherwise, it
* returns a newly allocated copy of that string.
*/
char *net_find_fqdn(struct hostent *p);
/*
* net_ip2host transforms the given textual IP number into a FQDN. If it
* can't find a FQDN, it will return what it can get. Otherwise, NULL.
*
* verify is whether or not the function should verify the hostname it
* gets. This takes an extra query but is safer for use in access control.
*/
char *net_ip2host(char *ip, int verify);
/*
* net_sendmail sends mail to the specified recipient with the given subject
* and message. Currently uses external programs.
*/
int net_sendmail(char *to, char *subject, char *msg);
#endif
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -