Sample code for 30+ languages & platforms
DataFlex

Example: Socket.DupSocket method

See more Socket/SSL/TLS Examples

Demonstrates how to call the DupSocket method.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSocket
_for_sending    Handle hoSocket_for_sending
_for_monitor    Handle hoSocket_for_monitor
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatSocket)) To hoSocket
    If (Not(IsComObjectCreated(hoSocket))) Begin
        Send CreateComObject of hoSocket
    End
    Get ComConnect Of hoSocket "example.com" 443 True 5000 To iSuccess

    // ...
    // ...

    // Duplicate the socket to share the same connection across threads.
    // In a multithreaded application, each thread should use its own socket object. For example:

    // - The main thread can use the original socket for reading.
    // - A secondary thread can use a duplicate for writing.
    // - Another thread can use a separate duplicate to monitor the connection status.

    Get Create (RefClass(cComChilkatSocket)) To hoSocket_for_sending
    If (Not(IsComObjectCreated(hoSocket_for_sending))) Begin
        Send CreateComObject of hoSocket_for_sending
    End
    Get pvComObject of hoSocket_for_sending to vSocket_for_sending
    Get ComDupSocket Of hoSocket vSocket_for_sending To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSocket To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatSocket)) To hoSocket_for_monitor
    If (Not(IsComObjectCreated(hoSocket_for_monitor))) Begin
        Send CreateComObject of hoSocket_for_monitor
    End
    Get pvComObject of hoSocket_for_monitor to vSocket_for_monitor
    Get ComDupSocket Of hoSocket vSocket_for_monitor To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSocket To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // All three socket objects: socket, socket_for_sending, and socket_for_monitor share the same underlying connection.


End_Procedure