Visual FoxPro
Visual FoxPro
Receive an Exact Number of Bytes into a BinData
See more Socket/SSL/TLS Examples
Demonstrates Socket.ReceiveBdN, which receives exactly the requested number of bytes and appends them to a BinData, continuing until the full count is satisfied.
Background. Inactivity is controlled by
MaxReadIdleMs: the call fails if incoming bytes halt for longer than MaxReadIdleMs milliseconds before the full amount is received. A single receive returns only what is currently available, whereas this counted receive waits for an exact number of bytes.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loSocket
LOCAL lnBTls
LOCAL lnMaxWaitMs
LOCAL loBd
lnSuccess = 0
loSocket = CreateObject('Chilkat.Socket')
* Connect to the server using TLS.
lnBTls = 1
lnMaxWaitMs = 5000
lnSuccess = loSocket.Connect("example.com",5000,lnBTls,lnMaxWaitMs)
IF (lnSuccess = 0) THEN
? loSocket.LastErrorText
RELEASE loSocket
CANCEL
ENDIF
* MaxReadIdleMs controls the inactivity limit for receiving. The ReceiveBdN call will fail if
* incoming bytes halt for longer than this many milliseconds before the full amount is received.
loSocket.MaxReadIdleMs = 15000
* Receive exactly the requested number of bytes, appending them to a BinData. The method continues
* receiving until the full count is satisfied or a failure occurs.
loBd = CreateObject('Chilkat.BinData')
lnSuccess = loSocket.ReceiveBdN(256,loBd)
IF (lnSuccess = 0) THEN
? loSocket.LastErrorText
RELEASE loSocket
RELEASE loBd
CANCEL
ENDIF
? "Received " + STR(loBd.NumBytes) + " bytes."
RELEASE loSocket
RELEASE loBd