Sample code for 30+ languages & platforms
DataFlex

Socket Receive String Until Specific Byte Value is Received

Demonstrates the Chilkat Socket ReceiveStringUntilByte method.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSock
    Boolean iUseTls
    Integer iPort
    Integer iMaxWaitMs
    Integer iLookForByte
    String sS1
    String sS2
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

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

    // --------------------------------------------------------------------
    // This example uses the public TCP echo service at https://tcpbin.com/
    // --------------------------------------------------------------------

    Move False To iUseTls
    Move 4242 To iPort
    Move 5000 To iMaxWaitMs
    Get ComConnect Of hoSock "tcpbin.com" iPort iUseTls iMaxWaitMs To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSock To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Wait a max of 2 seconds for a response..
    Set ComMaxReadIdleMs Of hoSock To 2000

    // Send some strings, each terminated by a 0 byte.
    Get ComSendString Of hoSock "This is the 1st string" To iSuccess
    Get ComSendByte Of hoSock 0 To iSuccess
    Get ComSendString Of hoSock "This is string number 2" To iSuccess
    Get ComSendByte Of hoSock 0 To iSuccess

    // The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
    Get ComSendByte Of hoSock 10 To iSuccess

    // Now let's receive what is echoed back....
    // Receive each string and the NULL byte.
    // The call to ReceiveStringUntilByte will receive incoming data until the lookForByte is encountered.
    // The lookForByte is receive and discarded (it is not returned in the string)
    Move 0 To iLookForByte
    Get ComReceiveStringUntilByte Of hoSock iLookForByte To sS1
    Get ComLastMethodSuccess Of hoSock To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoSock To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln sS1

    Get ComReceiveStringUntilByte Of hoSock iLookForByte To sS2
    Get ComLastMethodSuccess Of hoSock To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoSock To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln sS2

    // The echo server will also echo back the final LF
    Get ComReceiveByte Of hoSock True To iSuccess
    Move 100 To iMaxWaitMs
    Get ComClose Of hoSock 100 To iSuccess

    // Output:
    // This is the 1st string
    // This is string number 2


End_Procedure