Sample code for 30+ languages & platforms
Visual FoxPro

Socket Receive String Until Specific Byte Value is Received

Demonstrates the Chilkat Socket ReceiveStringUntilByte method.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSock
LOCAL lnUseTls
LOCAL lnPort
LOCAL lnMaxWaitMs
LOCAL lnLookForByte
LOCAL lcS1
LOCAL lcS2

lnSuccess = 0

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

loSock = CreateObject('Chilkat.Socket')

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

lnUseTls = 0
lnPort = 4242
lnMaxWaitMs = 5000
lnSuccess = loSock.Connect("tcpbin.com",lnPort,lnUseTls,lnMaxWaitMs)
IF (lnSuccess = 0) THEN
    ? loSock.LastErrorText
    RELEASE loSock
    CANCEL
ENDIF

* Wait a max of 2 seconds for a response..
loSock.MaxReadIdleMs = 2000

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

* The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
loSock.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)
lnLookForByte = 0
lcS1 = loSock.ReceiveStringUntilByte(lnLookForByte)
IF (loSock.LastMethodSuccess = 0) THEN
    ? loSock.LastErrorText
    RELEASE loSock
    CANCEL
ENDIF

? lcS1

lcS2 = loSock.ReceiveStringUntilByte(lnLookForByte)
IF (loSock.LastMethodSuccess = 0) THEN
    ? loSock.LastErrorText
    RELEASE loSock
    CANCEL
ENDIF

? lcS2

* The echo server will also echo back the final LF
loSock.ReceiveByte(1)
lnMaxWaitMs = 100
loSock.Close(100)

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

RELEASE loSock