Chapter 7

Socket Options and IOCTLs

 

 

 

COMPLETED PROJECT DOWNLOAD

 

What do we have in this chapter?

 

  1. Socket Options

  2. SOL_SOCKET Option Level

  3. SO_ACCEPTCONN

  4. SO_BROADCAST

  5. SO_CONDITIONAL_ACCEPT

  6. SO_CONNECT_TIME

  7. SO_DEBUG

  8. SO_DONTLINGER

  9. SO_DONTROUTE

  10. SO_ERROR

  11. SO_ EXCLUSIVEADDRUSE

  12. SO_KEEPALIVE

  13. SO_LINGER

  14. SO_MAX_MSG_SIZE

  15. SO_OOBINLINE

  16. SO_OPENTYPE

  17. SO_PROTOCOL_INFO

  18. SO_RCVBUF

  19. SO_RCVTIMEO

  20. SO_REUSEADDR

  21. SO_SNDBUF

  22. SO_SNDTIMEO

  23. SO_TYPE

  24. SO_UPDATE_ACCEPT_CONTEXT

  25. SOL_APPLETALK Option Level

  26. SO_CONFIRM_NAME

  27. SO_DEREGISTER_NAME, SO_REMOVE_NAME

  28. SO_LOOKUP_MYZONE, SO_GETMYZONE

  29. SO_LOOKUP_NAME

  30. SO_LOOKUP_ZONES, SO_GETZONELIST

  31. SO_LOOKUP_ZONES_ON_ADAPTER, SO_GETLOCALZONES

  32. SO_LOOKUP_NETDEF_ON_ADAPTER, SO_GETNETINFO

  33. SO_PAP_GET_SERVER_STATUS

  34. SO_PAP_PRIME_READ

  35. SO_PAP_SET_SERVER_STATUS

  36. SO_REGISTER_NAME

  37. SOL_IRLMP Option Level

  38. IRLMP_9WIRE_MODE

  39. IRLMP_ENUMDEVICES

  40. IRLMP_EXCLUSIVE_MODE

  41. IRLMP_IAS_QUERY

  42. IRLMP_IAS_SET

  43. IRLMP_IRLPT_MODE

  44. IRLMP_SEND_PDU_LEN

  45. IPPROTO_IP Option Level

  46. IP_OPTIONS

  47. IP_HDRINCL

  48. IP_TOS

  49. IP_TTL

  50. IP_MULTICAST_IF

  51. IP_MULTICAST_TTL

  52. IP_MULTICAST_LOOP

  53. IP_ADD_MEMBERSHIP

  54. IP_DROP_MEMBERSHIP

  55. IP_ADD_SOURCE_MEMBERSHIP

  56. IP_DROP_SOURCE_MEMBERSHIP

  57. IP_BLOCK_SOURCE

  58. IP_UNBLOCK_SOURCE

  59. IP_DONTFRAGMENT

  60. IP_PKTINFO

  61. IPPROTO_IPV6 Option Level

  62. IPV6_HDRINCL

  63. IPV6_UNICAST_HOPS

  64. IPV6_MULTICAST_IF

  65. IPV6_MULTICAST_HOPS

  66. IPV6_MULTICAST_LOOP

  67. IPV6_ADD_MEMBERSHIP, IPV6_JOIN_GROUP

  68. IPV6_DROP_MEMBERSHIP, IPV6_LEAVE_GROUP

  69. IPV6_PKTINFO

  70. IPPROTO_RM Option Level

  71. RM_RATE_WINDOW_SIZE

  72. RM_SET_MESSAGE_BOUNDARY

  73. RM_FLUSHCACHE

  74. RM_SENDER_WINDOW_ADVANCE_METHOD

  75. RM_SENDER_STATISTICS

  76. RM_LATEJOIN

  77. RM_SET_SEND_IF

  78. RM_ADD_RECEIVE_IF

  79. RM_DEL_RECEIVE_IF

  80. RM_SEND_WINDOW_ADV_RATE

  81. RM_USE_FEC

  82. RM_SET_MCAST_TTL

  83. RM_RECEIVER_STATISTICS

  84. IPPROTO_TCP Option Level

  85. TCP_NODELAY

  86. NSPROTO_IPX Option Level

  87. IPX_PTYPE

  88. IPX_FILTERPTYPE

  89. IPX_STOPFILTERPTYPE

  90. IPX_DSTYPE

  91. IPX_EXTENDED_ADDRESS

  92. IPX_RECVHDR

  93. IPX_MAXSIZE

  94. IPX_ADDRESS

  95. IPX_GETNETINFO

  96. IPX_GETNETINFO_NORIP

  97. IPX_SPXGETCONNECTIONSTATUS

  98. IPX_ADDRESS_NOTIFY

  99. IPX_MAX_ADAPTER_NUM

  100. IPX_RERIPNETNUMBER

  101. IPX_RECEIVE_BROADCAST

  102. IPX_IMMEDIATESPXACK

  103. Ioctlsocket(), WSAIoctl(), and WSANSPIoctl()

  104. Standard Ioctl Commands

  105. FIONBIO

  106. FIONREAD

  107. SIOCATMARK

  108. Other Ioctl Commands

  109. SIO_ENABLE_CIRCULAR_QUEUEING

  110. SIO_FIND_ROUTE

  111. SIO_FLUSH

  112. SIO_GET_BROADCAST_ADDRESS

  113. SIO_GET_EXTENSION_FUNCTION_POINTER

  114. SIO_CHK_QOS

  115. SIO_GET_QOS

  116. SIO_SET_QOS

  117. SIO_MULTIPOINT_LOOPBACK

  118. SIO_MULTICAST_SCOPE

  119. SIO_KEEPALIVE_VALS

  120. SIO_RCVALL

  121. SIO_RCVALL_MCAST

  122. SIO_RCVALL_IGMPMCAST

  123. SIO_ROUTING_INTERFACE_QUERY

  124. SIO_ROUTING_INTERFACE_CHANGE

  125. SIO_ADDRESS_LIST_QUERY

  126. SIO_ADDRESS_LIST_SORT

  127. SIO_ADDRESS_LIST_CHANGE

  128. SIO_GET_INTERFACE_LIST

  129. SIO_GET_INTERFACE_LIST_EX

  130. SIO_GET_MULTICAST_FILTER

  131. SIO_SET_MULTICAST_FILTER

  132. SIO_INDEX_BIND

  133. SIO_INDEX_MCASTIF

  134. SIO_INDEX_ADD_MCAST

  135. SIO_INDEX_DEL_MCAST

  136. SIO_NSP_NOTIFY_CHANGE

  137. SIO_QUERY_TARGET_PNP_HANDLE

  138. SIO_UDP_CONNRESET

  139. Secure Socket Layer (SSL) Ioctl Commands

  140. SO_SSL_GET_CAPABILITIES

  141. SO_SSL_GET_FLAGS

  142. SO_SSL_SET_FLAGS

  143. SO_SSL_GET_PROTOCOLS

  144. SO_SSL_SET_PROTOCOLS

  145. SO_SSL_SET_VALIDATE_CERT_HOOK

  146. SO_SSL_PERFORM_HANDSHAKE

  147. ATM Ioctl Commands

  148. SIO_GET_NUMBER_OF_ATM_DEVICES

  149. SIO_GET_ATM_ADDRESS

  150. SIO_ASSOCIATE_PVC

  151. SIO_GET_ATM_CONNECTION_ID

  152. Program Examples

  153. The Multicast and IP_TTL Option Program Example

  154. The IP_TOS and Type-of-Service Bit Program Example

  155. The SIO_ADDRESS_LIST_QUERY Program Example

  156. Setting the IOCTL SIO_ENABLE_CIRCULAR_QUEUEING Program Example

  157. The SIO_GET_ATM_ADDRESS Program Example

  158. The SIO_GET_BROADCAST_ADDRESS Program Example

  159. Setting the SO_KEEPALIVE_VALS on a Socket Program Example

  160. Using the IOCTLS SIO_RCVALL, SIO_RCVALL_MCAST and SIO_RCVALL_IGMPMCAST Program Example

  161. Using the SIO_ROUTING_INTERFACE_QUERY Option Program Example

  162. The SO_ACCEPTCONN Option Program Example

  163. The Broadcast Data and SO_BROADCASt Option Program Example

  164. The SO_MAX_MSG_SIZE Option Program Example

  165. The SO_PROTOCOL_INFO Option Program Example

  166. The SO_RCVTIMEO Option Program Example

  167. The SO_TYPE Option Program Example

 

Summary

 

Such an enormous variety of socket options and ioctl commands might seem overwhelming at first, but they do allow applications to access protocol-specific characteristics, as well as offer you the capability to fine-tune an application. In some cases, an application must use one or more socket options or ioctls in order to operate, as in the case of AppleTalk or IrDA. Even so, an application will most likely use only a few options at a time. Of course, one of the more frustrating aspects of socket options and ioctls is that not all options or ioctls are available on every Windows platform, causing trouble for those applications that are attempting to be cross-platform-compatible.

 

 

 

 

HOME

 

 
Custom Search

< Chap 6: Scalable Winsock2 Applications | Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9 | Part 10 | Chap 8: Registration & Name Resolutions >