usocket:socket-connect
(usocket:socket-connect host port &key protocol element-type timeout deadline nodelay local-host local-port)
Opens a blocking TCP connection to host and port and returns a socket --
the usocket-compatible entry point over
rontolisp:tcp-connect. In this shim a socket IS
its stream handle, so usocket:socket-stream is the identity function and the
stream built-ins (read-line, write-line, write-string, read-byte,
write-byte, close) work on it directly.
Only TCP is supported: :protocol :datagram (UDP) signals an error. The other
keyword arguments are accepted for compatibility and ignored --
:element-type in particular, because a rontolisp socket handle is always
bidirectional and supports both the line and the byte built-ins (there is no
separate binary/character stream construction to select).
The cl-postgres (Postmodern) connection shape works verbatim:
(usocket:socket-stream
(usocket:socket-connect "localhost" 5432
:element-type '(unsigned-byte 8)))
A loopback echo round trip (single-threaded choreography: connect before accept, write before the peer reads):
The usocket package is loaded automatically on first use (interpreter) or
spliced into the compiled program (JVM / WASM component), and is also
registered as the built-in ASDF system "usocket", so
(asdf:load-system "usocket"), (ql:quickload :usocket) and a third-party
.asd's :depends-on ("usocket") all resolve to it without touching the
network. On the interpreter and the JVM a connection failure signals a typed
usocket:socket-error condition (message preserved), so
(handler-case (usocket:socket-connect ...) (usocket:socket-error (e) ...))
works there; the subtypes (usocket:connection-refused-error etc.) are
defined, but the re-signal always uses socket-error, so catch that. On the
WASM component backend a failed connection returns nil instead of signaling
-- test the returned handle for nil.
Backend support
- Interpreter and JVM: full support (delegates to
rontolisp:tcp-connect). - WASM: component mode only (
--component), IPv4 literals only; a failed connection returnsnil. Preview 1 is a compile error. - Browser playground: not supported.