| See
          also object creation information - ClassID/ProgID  Overview | Reference Overview The SockOpt object is used for setting/getting a socket option.
          This is done through the GetOption and SetOption methods of the SocketStream
          object. Because the option values vary in type this object is intended
          to deal with this.  Currently only part of the options are supported. In most cases you
          will not need to use this feature (note also that some options are
          accessible through special properties), but there are certain
          circumstances in which you may need to query or set options. One good
          example is the IRDA lookup for devices
          (See the sample at the bottom of the page).  The usage of an option follows this pattern: 
          1. The level and the type of the option are set. Use
          the Level and the Type properties - put in them the
          constants/key names for the option you need. With this the SockOpt
          object is configured and "knows" the option's specific value
          type, and if the option is readable or/and writable. 2. If the option will be set to a socket, its value must be set.
          Pass the value to the Value property. 3. Use the GetOption or SetOption methods over a SocketStream to
            perform the operation. 4. If the operation is successful continue, if not check the
            SocketStream object's LastError for the error text. 5. If the options has been read (GetOption has been used) you may now consult the option's value
            by reading the SockOpt's Value property. Reference 
          
            |  | Level | Syntax: v = object.Level
 object.Level = v
 The option level. Default is socket. See Constants
              and names for the possible values. When read returns the name of the option level. To read the
              option level code as number use LevelCode |  
            |  | LevelCode | Syntax: v = object.LevelCode
 Returns the numeric value of the option level.
             |  
            |  | Type | Syntax: v = object.Type
 object.Type = v
 The option type. See Constants
              and names for the possible values. When read returns the name of the option type. To read the
              option type code as number use TypeCode |  
            |  | TypeCode | Syntax: v = object.TypeCode
 Returns the numeric value of the option type. |  
            |  | Value | Syntax: object.Value = v
 v = object.Value
 Set v = object.Value
 Set/Get the option value. Depending on the options type (and
              level) the value type varies. See the table on the Constants
              and names page. |  
            |  | Readable | Syntax: v = object.Readable
 b - Boolean. Indicates if the option can be read. The
              level and the option type must be set before referring to this
              property. |  
            |  | Writable | Syntax: v = object.Readable
 b - Boolean. Indicates if the option can be written. The
              level and the option type must be set before referring to this
              property. |  
            |  | GetBinValueData | Used internally. Can be helpful when
              used in C++. Syntax:
 v = object.GetBinValueData
 Returns the option value as array of bytes packed in VARIANT
              (VT_UI1 | VT_ARRAY) |  
            |  | PutBinValueData | Used internally. Can be helpful when
              used in C++. Syntax:
 object.PutBinValueData(v)
 Sets the option value as array of bytes packed in VARIANT
              (VT_UI1 | VT_ARRAY) |  
            |  | OptionalSize | Syntax: v = object.OptionalSize
 object.OptionalSize = v
 v - Numeric value, by default it is 0. If set to value
              different from 0 it specifies the optional size of a buffer,
              maximum elements applicable for certain options (see below). If
              set to 0 the option will use the default maximum/size. Current support for:IRLMP_ENUMDEVICES - Specifies the maximum number of devices that
              can be found in the vicinity while performing lookup. The default
              maximum is 10.
 |  
            |  | RequiredBuffer | Mostly for internal usage. Can be of
              some use in C++ applications. Syntax:
 v = object.RequiredBuffer
 v - Long. Returns the size of the buffer required for
              the option. The size is calculated over the option level, type and
              (if applicable) the optional size. Therefore they must be set
              before referring to this property. |  ... |