Sample code for 30+ languages & platforms
Xbase++

Socket Receive String Until Specific Byte Value is Received

Demonstrates the Chilkat Socket ReceiveStringUntilByte method.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oSock
LOCAL nUseTls
LOCAL nPort
LOCAL nMaxWaitMs
LOCAL nLookForByte
LOCAL cS1
LOCAL cS2

nSuccess := 0

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

oSock := CreateObject("Chilkat.Socket")

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

nUseTls := 0
nPort := 4242
nMaxWaitMs := 5000
nSuccess := oSock:Connect("tcpbin.com", nPort, nUseTls, nMaxWaitMs)
IF (nSuccess == 0)
    ? oSock:LastErrorText
    oSock:destroy()
    RETURN
ENDIF

//  Wait a max of 2 seconds for a response..
oSock:MaxReadIdleMs := 2000

//  Send some strings, each terminated by a 0 byte.
oSock:SendString("This is the 1st string")
oSock:SendByte(0)
oSock:SendString("This is string number 2")
oSock:SendByte(0)

//  The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
oSock:SendByte(10)

//  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)
nLookForByte := 0
cS1 := oSock:ReceiveStringUntilByte(nLookForByte)
IF (oSock:LastMethodSuccess == 0)
    ? oSock:LastErrorText
    oSock:destroy()
    RETURN
ENDIF

? cS1

cS2 := oSock:ReceiveStringUntilByte(nLookForByte)
IF (oSock:LastMethodSuccess == 0)
    ? oSock:LastErrorText
    oSock:destroy()
    RETURN
ENDIF

? cS2

//  The echo server will also echo back the final LF
oSock:ReceiveByte(1)
nMaxWaitMs := 100
oSock:Close(100)

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

oSock:destroy()