wwsocket::SendReceive

Sends a string to the open socket, waits for a response and returns the string response.

You should use SendReceive only on short requests that you know will retrieve typical single line responses as there's no way to know how much data is coming down. Sendreceive() simply combines a single Send() and Receive() method call and returns the result, which is very useful in typical TCP/IP command protocls as SMTP/FTP etc.

For longer content you should use the WaitFor() (if there's a terminating character) or Receive() methods (if you know the size of the output). Using Receive you'll likely have to loop to keep reading until there's no more data.

o.sendreceive(lcInput,lnSize)

Return Value

string output or "" if nothing is available (check nError)

Parameters

lcInput
Data to send.

lnSize
Size of the Receive buffer.
Defaults to nBufferSize

Example

...

*** Read the message Prefix  +OK x octets
lcResult =  THIS.oIP.SendReceive("RETR " + TRANSFORM(lnMessage) + CRLF)
IF THIS.oIP.nError # 0
   THIS.SetError("Error retrieving message: " + THIS.oIP.cErrorMsg)
   RETURN .NULL.
ENDIF
IF lcResult # "+"
   THIS.SetError(SUBSTR(lcResult,2))
   RETURN .NULL.
ENDIF   
IF EMPTY(lcResult)
   THIS.SetError("Timed out.",THIS.oIP.nError)
   RETURN .NULL.
ENDIF

See also:

Class wwsocket

© West Wind Technologies, 2023 • Updated: 10/08/01
Comment or report problem with topic