Sample code for 30+ languages & platforms
DataFlex

Move a Connection into a Socket Set

See more Socket/SSL/TLS Examples

Demonstrates Socket.TakeSocket, which moves a connection into a newly created member of this object's socket set. After one or more calls, the object acts as a set of sockets.

Background. A socket set groups multiple connections so they can be monitored together with the SelectForReading and SelectForWriting methods. After success, the source socket holds no connection.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoListenSock
    Variant vConnectedSock
    Handle hoConnectedSock
    Handle hoSocketSet
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatSocket)) To hoListenSock
    If (Not(IsComObjectCreated(hoListenSock))) Begin
        Send CreateComObject of hoListenSock
    End

    Get ComBindAndListen Of hoListenSock 5000 25 To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoListenSock To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatSocket)) To hoConnectedSock
    If (Not(IsComObjectCreated(hoConnectedSock))) Begin
        Send CreateComObject of hoConnectedSock
    End
    Get pvComObject of hoConnectedSock to vConnectedSock
    Get ComAcceptNext Of hoListenSock 20000 vConnectedSock To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoListenSock To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Move the connection out of connectedSock and into a newly created member of this object's socket
    //  set.  After one or more such calls, socketSet acts as a set of connected sockets (useful with the
    //  SelectForReading / SelectForWriting methods).  After success, connectedSock holds no connection.
    Get Create (RefClass(cComChilkatSocket)) To hoSocketSet
    If (Not(IsComObjectCreated(hoSocketSet))) Begin
        Send CreateComObject of hoSocketSet
    End
    Get pvComObject of hoConnectedSock to vConnectedSock
    Get ComTakeSocket Of hoSocketSet vConnectedSock To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSocketSet To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Connection added to the socket set."


End_Procedure