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