Sample code for 30+ languages & platforms
AutoIt

Socket Receive String Until Specific Byte Value is Received

Demonstrates the Chilkat Socket ReceiveStringUntilByte method.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oSock = ObjCreate("Chilkat.Socket")

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

Local $bUseTls = False
Local $iPort = 4242
Local $iMaxWaitMs = 5000
$bSuccess = $oSock.Connect("tcpbin.com",$iPort,$bUseTls,$iMaxWaitMs)
If ($bSuccess = False) Then
    ConsoleWrite($oSock.LastErrorText & @CRLF)
    Exit
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)
Local $iLookForByte = 0
Local $s1 = $oSock.ReceiveStringUntilByte($iLookForByte)
If ($oSock.LastMethodSuccess = False) Then
    ConsoleWrite($oSock.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite($s1 & @CRLF)

Local $s2 = $oSock.ReceiveStringUntilByte($iLookForByte)
If ($oSock.LastMethodSuccess = False) Then
    ConsoleWrite($oSock.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite($s2 & @CRLF)

; The echo server will also echo back the final LF
$oSock.ReceiveByte(True)
$iMaxWaitMs = 100
$oSock.Close(100)

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