Xbase++
Xbase++
Socket Receive String Until Specific Byte Value is Received
Demonstrates the Chilkat Socket ReceiveStringUntilByte method.Chilkat Xbase++ Downloads
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()