Sample code for 30+ languages & platforms
PureBasic Requires Chilkat v11.0.0+

Example: Socket.DupSocket method

See more Socket/SSL/TLS Examples

Demonstrates how to call the DupSocket method.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSocket.pb"

Procedure ChilkatExample()

    success.i = 0

    socket.i = CkSocket::ckCreate()
    If socket.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkSocket::ckConnect(socket,"example.com",443,1,5000)

    ;  ...
    ;  ...

    ;  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.

    socket_for_sending.i = CkSocket::ckCreate()
    If socket_for_sending.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkSocket::ckDupSocket(socket,socket_for_sending)
    If success = 0
        Debug CkSocket::ckLastErrorText(socket)
        CkSocket::ckDispose(socket)
        CkSocket::ckDispose(socket_for_sending)
        ProcedureReturn
    EndIf

    socket_for_monitor.i = CkSocket::ckCreate()
    If socket_for_monitor.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkSocket::ckDupSocket(socket,socket_for_monitor)
    If success = 0
        Debug CkSocket::ckLastErrorText(socket)
        CkSocket::ckDispose(socket)
        CkSocket::ckDispose(socket_for_sending)
        CkSocket::ckDispose(socket_for_monitor)
        ProcedureReturn
    EndIf

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


    CkSocket::ckDispose(socket)
    CkSocket::ckDispose(socket_for_sending)
    CkSocket::ckDispose(socket_for_monitor)


    ProcedureReturn
EndProcedure