Sample code for 30+ languages & platforms
Lua

Debugging with Socket Session Logging

See more Socket/SSL/TLS Examples

Debugging with socket session logging.

The Chilkat Socket component provides properties for keeping a session log making it possible to see the exact bytes received and sent on a TCP/IP or SSL connection. To enable session logging, set the KeepSessionLog property = _TRUE_. The SessionLogEncoding property controls how binary, non-printable bytes are represented in the log. There are two possible settings: Possible values are "esc" and "hex". The default value is "esc".

When set to "hex", the bytes are encoded as a hexidecimalized string. The "esc" encoding is a C-string like encoding, and is more compact than hex if most of the data to be logged is text. Printable us-ascii chars are unmodified. Common "C" control chars are represented as "\r", "\n", "\t", etc. Non-printable and byte values greater than 0x80 are escaped using a backslash and hex encoding: \xHH. Certain printable chars are backslashed: SPACE, double-quote, single-quote, etc.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local socket = chilkat.Socket.new()

-- Enable session logging:
socket.keep_session_log = true
socket.session_log_encoding = "esc"

-- To demonstrate session logging, we'll connect to an
-- HTTP server and download the HTTP response header:
local ssl = false
local maxWaitMillisec = 20000
local success = socket:connect("www.chilkatsoft.com", 80, ssl, maxWaitMillisec)
if not success then
    print(socket.last_error_text)
    return
end

-- Set maximum timeouts for reading an writing (in millisec)
socket.max_read_idle_ms = 10000
socket.max_send_idle_ms = 10000

-- The socket component includes a BuildHttpGetRequest
-- method for convenience. Build a GET and send it to
-- the web server:
local httpGet = socket:build_http_get_request("http://www.chilkatsoft.com/")

-- Send it...
success = socket:send_string(httpGet)
if not success then
    print(socket.last_error_text)
    return
end

-- Read the response up to the first double CRLF:
local httpHeader = socket:receive_until_match("\r\n\r\n")
if not socket.last_method_success then
    print(socket.last_error_text)
    return
end

-- Close the connection with the server
-- Wait a max of 20 seconds (20000 millsec)
success = socket:close(20000)

-- Display the session log:
print(socket.session_log)

-- Show the HTTP response header:
print(httpHeader)