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