flare.tcp
Blocking TCP streams and listeners.
Built on flare.net POSIX socket primitives. Every connection has
TCP_NODELAY set by default for low-latency I/O.
Public API
from flare.tcp import TcpStream, TcpListener
TcpStream— A connected TCP socket:connect,read,write,close.TcpListener— A bound, listening TCP socket:bind,accept.
All operations raise typed errors from flare.net on failure.
Example
from flare.tcp import TcpStream, TcpListener
from flare.net import SocketAddr
def echo_server() raises:
var listener = TcpListener.bind(SocketAddr.localhost(9000))
var client = listener.accept()
var buf = List[UInt8](capacity=4096)
buf.resize(4096, 0)
var n = client.read(buf.unsafe_ptr(), len(buf))
_ = client.write(Span[UInt8, _](buf)[:n]) # echo back
client.close()
def echo_client() raises:
var conn = TcpStream.connect(SocketAddr.localhost(9000))
_ = conn.write("hello\n".as_bytes())
var buf = List[UInt8](capacity=4096)
buf.resize(4096, 0)
_ = conn.read(buf.unsafe_ptr(), len(buf))
conn.close()