Xbasic

INET::SSLSocket Class

Description

Properties and methods in the SSLSocket class.

The INET::SSLSocket object is a version of INET::Socket that supports reading and writing data between client and server computers. The following code provides an overview of how socket communications are designed.

Client Computer
Host Computer

dim ServerSocket as INET::Socket dim ClientSocket as INET::Socket dim CTX as INET::SSLContext Define CTX properties ServerSocket.Listen() ServerSocket.Accept(ClientSocket)

dim LocalSocket as INET::Socket LocalSocket.Connect() LocalSocket.Write()

ClientSocket.Read() ClientSocket.Write()

LocalSocket.Read()

There may be more exchanges of data.

LocalSocket.Close()

ClientSocket.Close()

More sessions with other client computers.

ServerSocket.Close()

Example

This example code shows how to use the methods of the INET::SSLSocket object.

dim ssl as inet::sslsocket
dim Result as C
dim Temp as C
ssl.context.requirevalidcertificate = .f.
if ssl.connect("toshiba1000", 443, 2000) then
    if ssl.write("GET / HTTP/1.0" + crlf() + crlf()) then
        FoundData = ssl.read(temp, 10000, -1)
        while FoundData
            on error resume next
            Result = Result + Temp
            FoundData = .f.
            if ssl.isopen then
                FoundData = ssl.read(temp, 10000, -1)
            end if
        end while
        a5_show_variable(Result, "Test OpenSSL HTTP Client - Response")
    else
        ui_msg_box("Request Error", ssl.callresult.text)
    end if
    ssl.close()
else
    ui_msg_box("Connect Error", ssl.callresult.text)
end if

This code illustrates a simple SSL HTTP Server.

dim ResponseHeader as C
dim ResponseFooter as C
dim ctx as INET::SSLContext
dim ssl as inet::sslsocket
dim doc as inet::httpdocument
dim Request as C
dim Temp as C
ResponseHeader = <<%str%
HTTP/1.1 200 OK
Server: SampleAlphaFiveSSL
Content-Type: text/html

Request
%str%
ResponseFooter = <<%str%

Properties

Context

Context property

IsBusyLogical

Logical IsBusy property

IsOpenLogical

Logical IsOpen property

IsReadableLogical

Logical IsReadable property

IsWriteableLogical

Logical IsWriteable property

RemoteAddressCharacter

String RemoteAddress property

LocalAddressCharacter

String LocalAddress property

RemotePortNumeric

Numeric RemotePort property

LocalPortNumeric

Numeric LocalPort property

HandleNumeric

Numeric Handle property

CallResult

CallResult property

BlockingLogical

Logical Blocking property

BroadcastLogical

Logical Broadcast property

DebugLogical

Logical Debug property

DelayLogical

Logical Delay property

KeepAliveLogical

Logical KeepAlive property

LingerLogical

Logical Linger property

OutOfBandInLineLogical

Logical OutOfBandInLine property

RouteLogical

Logical Route property

ReceiveBufferSizeNumeric

Numeric ReceiveBufferSize property

ReceiveTimeoutNumeric

Numeric ReceiveTimeout property

ReuseAddressLogical

Logical ReuseAddress property

SendBufferSizeNumeric

Numeric SendBufferSize property

SendTimeoutNumeric

Numeric SendTimeout property

BytesAvailableNumeric

Numeric BytesAvailable property

IsListeningLogical

Logical IsListening property

Methods

Accept Method

The INET::SSLSocket::Accept() method accepts a new connection (the socket must already be listening). The method returns a status object with information about the success of the call. If the call is successful, AcceptedSocket contains the new instance of INET::Socket. HandshakeReadTimeout is appropriate for SSL sockets only.

Close Method

The INET::SSLSocket::Close() method closes an open connection.

Connect Method

The INET::SSLSocket::Connect() method opens a connection to the requested host and port. Note: ConnectTimeout is in milliseconds.

CreateCertificateRequest Method

The INET::SSLSocket::CreateCertificateRequest() method creates a request for a certificate.

GetOptions Method

The INET::SSLSocket::GetOptions() method reads the status of one or more option values.

Listen Method

The INET::SSLSocket::Listen() method opens a socket to listen for incoming requests.

Peek Method

The INET::SSLSocket::Peek() method reads characters into a string. Peek does not remove the characters from the receive buffer.

Query_TCP Method

Returns .T. (TRUE) if the TCP connection described by the arguments matches an active connection.

Read Method

The INET::SSLSocket::Read() method reads characters from the connection into a string.

ReadBinary Method

The INET::SSLSocket::ReadBinary() method reads bytes from the connection into a BLOB variable.

ReadLine Method

The INET::SSLSocket::ReadLine() method reads a line from the receive buffer. A line is terminated by a CR-LF. If nothing is available, the method returns an empty string.

ReadUntil Method

Reads from the input stream until the delimiter is encountered or a timeout occurs. If the function returns false, there may still be data in the returned buffer. This means that the read timed out before receiving the delimiter. If ReturnDelimiter is true, the delimiter is returned with the string.

Reconnect Method

The INET::SSLSocket::Reconnect() method reestablishes the connection with an SSL partner (session settings may have changed).

SendFile Method

The INET::SSLSocket::SendFile() method sends the named file.

SetOptions Method

The INET::SSLSocket::SetOptions() methods sets one or more options in a single call.

StartSSLSession Method

The INET::Socket OpenSocket method begins an SSL session with a socket that is already opened. If successful the socket remains secure until closed. If unsuccessful both sockets will be closed. After this call you should no long reference OpenSocket.

Write Method

The INET::SSLSocket::Write() method writes character data to the connection.

WriteBinary Method

The INET::SSLSocket::WriteBinary() method writes binary data to the connection.

See Also