socket.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* ==== socket.h.h ============================================================
  2.  * Copyright (c) 1994 by Chris Provenzano, proven@athena.mit.edu
  3.  *
  4.  * Description : Correct Linux header file.
  5.  */
  6. #ifndef _PTHREAD_SOCKET_H_
  7. #define _PTHREAD_SOCKET_H_
  8. /* #include <linux/socket.h> */
  9. #ifndef _LINUX_SOCKET_H
  10. #define _LINUX_SOCKET_H
  11. /* IP options */
  12. #define IP_TOS 1
  13. #define IPTOS_LOWDELAY 0x10
  14. #define IPTOS_THROUGHPUT 0x08
  15. #define IPTOS_RELIABILITY 0x04
  16. #define IP_TTL 2
  17. #ifndef IP_HDRINCL
  18. #define IP_HDRINCL 3
  19. #endif
  20. #ifdef V1_3_WILL_DO_THIS_FUNKY_STUFF
  21. #define IP_OPTIONS 4
  22. #endif
  23. #endif
  24. /* #include <asm/socket.h> arch-dependent defines */
  25. #include <linux/sockios.h> /* the SIOCxxx I/O controls */
  26. #include <pthread/posix.h>
  27. struct sockaddr {
  28.    unsigned short sa_family; /* address family, AF_xxx */
  29.    char sa_data[14]; /* 14 bytes of protocol address */
  30. };
  31. struct linger {
  32.    int  l_onoff; /* Linger active */
  33.    int l_linger; /* How long to linger for */
  34. };
  35. struct msghdr 
  36. {
  37. void * msg_name; /* Socket name */
  38. int msg_namelen; /* Length of name */
  39. struct iovec * msg_iov; /* Data blocks */
  40. int  msg_iovlen; /* Number of blocks */
  41. void  * msg_accrights; /* Per protocol magic (eg BSD file descriptor passing) */
  42. int msg_accrightslen;/* Length of rights list */
  43. };
  44. /* Socket types. */
  45. #define SOCK_STREAM 1 /* stream (connection) socket */
  46. #define SOCK_DGRAM 2 /* datagram (conn.less) socket */
  47. #define SOCK_RAW 3 /* raw socket */
  48. #define SOCK_RDM 4 /* reliably-delivered message */
  49. #define SOCK_SEQPACKET 5 /* sequential packet socket */
  50. #define SOCK_PACKET 10 /* linux specific way of */
  51. /* getting packets at the dev */
  52. /* level.  For writing rarp and */
  53. /* other similar things on the */
  54. /* user level. */
  55. /* Supported address families. */
  56. #define AF_UNSPEC 0
  57. #define AF_UNIX 1 /* Unix domain sockets  */
  58. #define AF_INET 2 /* Internet IP Protocol  */
  59. #define AF_AX25 3 /* Amateur Radio AX.25  */
  60. #define AF_IPX 4 /* Novell IPX  */
  61. #define AF_APPLETALK 5 /* Appletalk DDP  */
  62. #define AF_NETROM 6 /* Amateur radio NetROM  */
  63. #define AF_BRIDGE 7 /* Multiprotocol bridge  */
  64. #define AF_AAL5 8 /* Reserved for Werner's ATM  */
  65. #define AF_X25 9 /* Reserved for X.25 project  */
  66. #define AF_INET6 10 /* IP version 6 */
  67. #define AF_MAX 12 /* For now.. */
  68. /* Protocol families, same as address families. */
  69. #define PF_UNSPEC AF_UNSPEC
  70. #define PF_UNIX AF_UNIX
  71. #define PF_INET AF_INET
  72. #define PF_AX25 AF_AX25
  73. #define PF_IPX AF_IPX
  74. #define PF_APPLETALK AF_APPLETALK
  75. #define PF_NETROM AF_NETROM
  76. #define PF_BRIDGE AF_BRIDGE
  77. #define PF_AAL5 AF_AAL5
  78. #define PF_X25 AF_X25
  79. #define PF_INET6 AF_INET6
  80. #define PF_MAX AF_MAX
  81. /* Maximum queue length specificable by listen.  */
  82. #define SOMAXCONN 128
  83. /* Flags we can use with send/ and recv. */
  84. #define MSG_OOB 1
  85. #define MSG_PEEK 2
  86. #define MSG_DONTROUTE 4
  87. /* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
  88. #define SOL_SOCKET 1
  89. #define SOL_IP 0
  90. #define SOL_IPX 256
  91. #define SOL_AX25 257
  92. #define SOL_ATALK 258
  93. #define SOL_NETROM 259
  94. #define SOL_TCP 6
  95. #define SOL_UDP 17
  96. /* For setsockoptions(2) */
  97. #define SO_DEBUG 1
  98. #define SO_REUSEADDR 2
  99. #define SO_TYPE 3
  100. #define SO_ERROR 4
  101. #define SO_DONTROUTE 5
  102. #define SO_BROADCAST 6
  103. #define SO_SNDBUF 7
  104. #define SO_RCVBUF 8
  105. #define SO_KEEPALIVE 9
  106. #define SO_OOBINLINE 10
  107. #define SO_NO_CHECK 11
  108. #define SO_PRIORITY 12
  109. #define SO_LINGER 13
  110. /* To add :#define SO_REUSEPORT 14 */
  111. #define IP_MULTICAST_IF 32
  112. #define IP_MULTICAST_TTL  33
  113. #define IP_MULTICAST_LOOP  34
  114. #define IP_ADD_MEMBERSHIP 35
  115. #define IP_DROP_MEMBERSHIP 36
  116. /* These need to appear somewhere around here */
  117. #define IP_DEFAULT_MULTICAST_TTL        1
  118. #define IP_DEFAULT_MULTICAST_LOOP       1
  119. #define IP_MAX_MEMBERSHIPS              20
  120.  
  121. /* IPX options */
  122. #define IPX_TYPE 1
  123. /* TCP options - this way around because someone left a set in the c library includes */
  124. #define TCP_NODELAY 1
  125. #define TCP_MAXSEG 2
  126. /* The various priorities. */
  127. #define SOPRI_INTERACTIVE 0
  128. #define SOPRI_NORMAL 1
  129. #define SOPRI_BACKGROUND 2
  130. /* 
  131.  * Functions
  132.  */
  133. __BEGIN_DECLS
  134. int accept __P_((int, struct sockaddr *, int *));
  135. int bind __P_((int, const struct sockaddr *, int));
  136. int connect __P_((int, const struct sockaddr *, int));
  137. int listen __P_((int, int));
  138. int socket __P_((int, int, int));
  139. int getsockopt __P_((int __s, int __level, int __optname,
  140.                 void *__optval, int *__optlen));
  141. int setsockopt __P_((int __s, int __level, int __optname,
  142.                 __const void *__optval, int optlen));
  143. int getsockname __P_((int __sockfd, struct sockaddr *__addr,
  144.                 int *__paddrlen));
  145. int getpeername __P_((int __sockfd, struct sockaddr *__peer,
  146.                 int *__paddrlen));
  147. ssize_t send __P_((int __sockfd, __const void *__buff, size_t __len, int __flags));
  148. ssize_t recv __P_((int __sockfd, void *__buff, size_t __len, int __flags));
  149. ssize_t sendto __P_((int __sockfd, __const void *__buff, size_t __len,
  150.                  int __flags, __const struct sockaddr *__to,
  151.                  int __tolen));
  152. ssize_t recvfrom __P_((int __sockfd, void *__buff, size_t __len,
  153.                  int __flags, struct sockaddr *__from,
  154.                  int *__fromlen));
  155. extern ssize_t sendmsg __P_((int __fd, __const struct msghdr *__message,
  156.                         int __flags));
  157. extern ssize_t recvmsg __P_((int __fd, struct msghdr *__message,
  158.                         int __flags));
  159. int shutdown __P_((int __sockfd, int __how));
  160. __END_DECLS
  161. #endif