📄 os_socket.h
字号:
// -*- C++ -*-//=============================================================================/** * @file os_socket.h * * main sockets header * * $Id: os_socket.h 79332 2007-08-13 20:30:44Z sowayaa $ * * @author Don Hinton <dhinton@dresystems.com> * @author This code was originally in various places including ace/OS.h. *///=============================================================================#ifndef ACE_OS_INCLUDE_SYS_OS_SOCKET_H#define ACE_OS_INCLUDE_SYS_OS_SOCKET_H#include "os/config-lite.h"#if !defined (ACE_LACKS_PRAGMA_ONCE)# pragma once#endif /* ACE_LACKS_PRAGMA_ONCE */#include "os/os_include/sys/os_uio.h"#if !defined (ACE_LACKS_SYS_SOCKET_H)# include /**/ <sys/socket.h>#endif /* !ACE_LACKS_SYS_SOCKET_H */#if defined (ACE_VXWORKS) && (ACE_VXWORKS < 0x620)# include /**/ <sockLib.h>#endif /* ACE_VXWORKS */// Place all additions (especially function declarations) within extern "C" {}#ifdef __cplusplusextern "C"{#endif /* __cplusplus */#if !defined (ACE_HAS_MSG) && !defined (SCO) struct msghdr {};#endif /* ACE_HAS_MSG */#if defined (ACE_HAS_MSG) && defined (ACE_LACKS_MSG_ACCRIGHTS)# if !defined (msg_accrights)# undef msg_control# define msg_accrights msg_control# endif /* ! msg_accrights */# if !defined (msg_accrightslen)# undef msg_controllen# define msg_accrightslen msg_controllen# endif /* ! msg_accrightslen */#endif /* ACE_HAS_MSG && ACE_LACKS_MSG_ACCRIGHTS */# if defined (ACE_LACKS_SOCKADDR) struct sockaddr { u_char sa_len; /* total length */ u_char sa_family; /* address family */ char sa_data[14]; /* actually longer; address value */ };# endif /* ACE_LACKS_SOCKADDR */# if defined (ACE_LACKS_LINGER) struct linger { int l_onoff; /* option on/off */ int l_linger; /* linger time */ };# endif /* ACE_LACKS_LINGER */#if defined (ACE_WIN32) struct msghdr { /// Optional address sockaddr * msg_name; /// Size of address int msg_namelen; /// Scatter/gather array iovec *msg_iov; /// # elements in msg_iov int msg_iovlen; /// Access rights sent/received caddr_t msg_accrights; int msg_accrightslen; };#endif /* ACE_WIN32 */#if defined (ACE_HAS_4_4BSD_SENDMSG_RECVMSG) // Control message size to pass a file descriptor.# define ACE_BSD_CONTROL_MSG_LEN sizeof (struct cmsghdr) + sizeof (ACE_HANDLE)#endif /* ACE_HAS_4_4BSD_SENDMSG_RECVMSG */// Increase the range of "address families". Please note that this// must appear _after_ the include of sys/socket.h, for the AF_FILE// definition on Linux/glibc2.#if !defined (AF_ANY)# define AF_ANY (-1)#endif /* AF_ANY */#if !defined (AF_UNSPEC)# define AF_UNSPEC 0#endif /* AF_UNSPEC */#if !defined (AF_LOCAL)# define AF_LOCAL 1#endif /* AF_LOCAL */#if !defined (AF_UNIX)# define AF_UNIX AF_LOCAL#endif /* AF_UNIX */#if !defined (AF_INET)# define AF_INET 2#endif /* AF_INET */#if !defined (PF_INET)# define PF_INET AF_INET#endif /* PF_INET */#if !defined (PF_LOCAL)# define PF_LOCAL AF_LOCAL#endif /* PF_LOCAL */#if !defined (PF_UNIX)# define PF_UNIX PF_LOCAL#endif /* PF_UNIX */#if !defined (AF_MAX)# define AF_MAX 29#endif /* AF_MAX */#if !defined (PF_UNSPEC)# define PF_UNSPEC 0#endif /* PF_UNSPEC */#define AF_SPIPE (AF_MAX + 1)#if !defined (AF_FILE)# define AF_FILE (AF_MAX + 2)#endif /* ! AF_FILE */#define AF_DEV (AF_MAX + 3)#define AF_UPIPE (AF_SPIPE)#if !defined (MSG_OOB)# define MSG_OOB 0x1#endif /* MSG_OOB */#if !defined (MSG_PEEK)# define MSG_PEEK 0x2#endif /* MSG_PEEK */#if !defined (SOCK_STREAM)# define SOCK_STREAM 1#endif /* SOCK_STREAM */#if !defined (SOCK_DGRAM)# define SOCK_DGRAM 2#endif /* SOCK_DGRAM */#if !defined (SOCK_SEQPACKET)# define SOCK_SEQPACKET 5#endif /* SOCK_SEQPACKET */#if !defined (SOL_SOCKET)# define SOL_SOCKET 0xffff#endif /* SOL_SOCKET */#if !defined (SO_REUSEADDR)# define SO_REUSEADDR 0x0004#endif /* SO_REUSEADDR */#if !defined (SO_LINGER)# define SO_LINGER 0x0080#endif /* SO_LINGER */#if !defined (SO_SNDBUF)# define SO_SNDBUF 0x1001#endif /* SO_SNDBUF */#if !defined (SO_RCVBUF)# define SO_RCVBUF 0x1002#endif /* SO_RCVBUF */#if !defined (SO_BROADCAST)# define SO_BROADCAST 0x0020#endif /* SO_BROADCAST */#if !defined (SO_ERROR)# define SO_ERROR 0x1007#endif /* SO_ERROR */#if !defined (SCM_RIGHTS)# define SCM_RIGHTS 0x01#endif /* SCM_RIGHTS */#if defined (ACE_HAS_IPV6)# if defined (ACE_USES_IPV4_IPV6_MIGRATION)# define ACE_ADDRESS_FAMILY_INET AF_UNSPEC# define ACE_PROTOCOL_FAMILY_INET PF_UNSPEC# else# define ACE_ADDRESS_FAMILY_INET AF_INET6# define ACE_PROTOCOL_FAMILY_INET PF_INET6# endif /* ACE_USES_IPV4_IPV6_MIGRATION */#else /* !ACE_HAS_IPV6 */# define ACE_ADDRESS_FAMILY_INET AF_INET# define ACE_PROTOCOL_FAMILY_INET PF_INET#endif /* ACE_HAS_IPV6 */#if defined (ACE_HAS_SOCKLEN_T)# if defined (__hpux) /* ** HP-UX supplies the socklen_t type unless some feature set less than ** _XOPEN_SOURCE_EXTENDED is specifically requested. However, it only ** actually uses the socklen_t type in supplied socket functions if ** _XOPEN_SOURCE_EXTENDED is specifically requested. So, for example, ** the compile options ACE usually uses (includes -mt) cause _HPUX_SOURCE ** to be set, which sets _INCLUDE_XOPEN_SOURCE_EXTENDED (causing socklen_t ** to be defined) but _not_ _XOPEN_SOURCE_EXTENDED (causing socket functions ** to use int, not socklen_t). React to this situation here... */# if defined (_XOPEN_SOURCE_EXTENDED)typedef socklen_t ACE_SOCKET_LEN;# elsetypedef int ACE_SOCKET_LEN;# endif /* _XOPEN_SOURCE_EXTENDED */# elsetypedef socklen_t ACE_SOCKET_LEN;# endif /* __hpux */#elif defined (ACE_HAS_SIZET_SOCKET_LEN)typedef size_t ACE_SOCKET_LEN;#elsetypedef int ACE_SOCKET_LEN;#endif /* ACE_HAS_SIZET_SOCKET_LEN */#if defined (ACE_HAS_NETLINK)# include /**/ <asm/types.h># include /**/ <linux/netlink.h># define ACE_PROTOCOL_FAMILY_NETLINK AF_NETLINK#endif#if defined (ACE_HAS_LKSCTP)extern "C"{#include /**/ <netinet/in.h>#include /**/ <netinet/sctp.h>}#endif /* ACE_HAS_LKSCTP */# if defined (ACE_LACKS_TIMEDWAIT_PROTOTYPES) ssize_t recv_timedwait (ACE_HANDLE handle, char *buf, int len, int flags, struct timespec *timeout); ssize_t recvmsg_timedwait (ACE_HANDLE handle, struct msghdr *msg, int flags, struct timespec *timeout); ssize_t recvfrom_timedwait (ACE_HANDLE handle, char *buf, int len, int flags, struct sockaddr *addr, int *addrlen, struct timespec *timeout); ssize_t send_timedwait (ACE_HANDLE handle, const char *buf, int len, int flags, struct timespec *timeout); ssize_t sendmsg_timedwait (ACE_HANDLE handle, const struct msghdr *msg, int flags, struct timespec *timeout); ssize_t sendto_timedwait (ACE_HANDLE handle, const char *buf, int len, int flags, const struct sockaddr *addr, int addrlen, struct timespec *timeout);# endif /* ACE_LACKS_TIMEDWAIT_PROTOTYPES */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* ACE_OS_INCLUDE_SYS_OS_SOCKET_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -