DataFlex
DataFlex
Socket Receive String Until Specific Byte Value is Received
Demonstrates the Chilkat Socket ReceiveStringUntilByte method.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSock
Boolean iUseTls
Integer iPort
Integer iMaxWaitMs
Integer iLookForByte
String sS1
String sS2
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatSocket)) To hoSock
If (Not(IsComObjectCreated(hoSock))) Begin
Send CreateComObject of hoSock
End
// --------------------------------------------------------------------
// This example uses the public TCP echo service at https://tcpbin.com/
// --------------------------------------------------------------------
Move False To iUseTls
Move 4242 To iPort
Move 5000 To iMaxWaitMs
Get ComConnect Of hoSock "tcpbin.com" iPort iUseTls iMaxWaitMs To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSock To sTemp1
Showln sTemp1
Procedure_Return
End
// Wait a max of 2 seconds for a response..
Set ComMaxReadIdleMs Of hoSock To 2000
// Send some strings, each terminated by a 0 byte.
Get ComSendString Of hoSock "This is the 1st string" To iSuccess
Get ComSendByte Of hoSock 0 To iSuccess
Get ComSendString Of hoSock "This is string number 2" To iSuccess
Get ComSendByte Of hoSock 0 To iSuccess
// The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
Get ComSendByte Of hoSock 10 To iSuccess
// 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)
Move 0 To iLookForByte
Get ComReceiveStringUntilByte Of hoSock iLookForByte To sS1
Get ComLastMethodSuccess Of hoSock To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoSock To sTemp1
Showln sTemp1
Procedure_Return
End
Showln sS1
Get ComReceiveStringUntilByte Of hoSock iLookForByte To sS2
Get ComLastMethodSuccess Of hoSock To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoSock To sTemp1
Showln sTemp1
Procedure_Return
End
Showln sS2
// The echo server will also echo back the final LF
Get ComReceiveByte Of hoSock True To iSuccess
Move 100 To iMaxWaitMs
Get ComClose Of hoSock 100 To iSuccess
// Output:
// This is the 1st string
// This is string number 2
End_Procedure