docs / stdlib / io / net

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

TcpStream

cajeta.io.net.TcpStream — a connected TCP stream: the blocking client/peer socket, obtained from connect (client side) or TcpListener.accept (server side). The async forms (connectAsync, readAsync, writeAsync, writeAllAsync, readWithin) are fiber-parking readiness loops — they never block the carrier thread. The static WOULD_BLOCK sentinel (-1) is returned by the non-blocking I/O forms when an op could not complete immediately. Socket options (TCP_NODELAY, SO_KEEPALIVE, buffer sizes, SO_LINGER, TTL) are exposed as set/get pairs, and the destructor closes the socket if close() wasn’t called, so a dropped TcpStream never leaks a descriptor.

SocketAddress addr #= SocketAddress.parse("127.0.0.1:7000");
TcpStream s #= TcpStream.connect(#addr);
int8[] buf = heap int8[4];
s.write(buf, (int64) 0, (int64) 4);
int64 got = s.read(buf, (int64) 0, (int64) 4);
s.close();

Methods

Signature
static #TcpStream connect(#SocketAddress addr) ⚑Open a blocking TCP connection to addr and return the connected stream
static #TcpStream connectAsync(#SocketAddress addr) ⚑Connect without blocking the carrier (the fiber parks until the connect completes)
int64 read(int8[] dst, int64 offset, int64 length)Read up to length bytes into dst[offset..offset+length); returns the count, 0 at EOF
int64 write(int8[] data, int64 offset, int64 length)Write up to length bytes from data[offset..); returns the count written
void writeAll(int8[] data, int64 offset, int64 length)Write all of data[offset..offset+length), looping past short writes
int64 readAsync(int8[] buf, int64 offset, int64 length)Async read — parks the fiber on readability instead of blocking
int64 writeAsync(int8[] data, int64 offset, int64 length)Async write — parks the fiber on writability
void writeAllAsync(int8[] data, int64 offset, int64 length)Async write-all: every byte lands, fiber-parking between short writes
int64 readWithin(int8[] buf, int64 offset, int64 length, int32 timeoutMs)Deadline-bounded async read: like readAsync but bounds the total wait by timeoutMs
void setNoDelay(boolean on) / boolean getNoDelay()TCP_NODELAY — disable Nagle’s algorithm so small writes send immediately
void setKeepAlive(boolean on) / boolean getKeepAlive()SO_KEEPALIVE
void setRecvBufferSize(int32 bytes) / int32 getRecvBufferSize()Kernel receive buffer size (SO_RCVBUF)
void setSendBufferSize(int32 bytes) / int32 getSendBufferSize()Kernel send buffer size (SO_SNDBUF)
void setLinger(boolean on, int32 seconds) / boolean getLinger()SO_LINGER
void setTtl(int32 ttl) / int32 getTtl()Outbound unicast TTL / hop limit (0..255)
void shutdown(int32 how)Shut down part of the full-duplex connection without closing the descriptor
void close()Close the underlying socket; idempotent
~TcpStream()Destructor: closes the socket if close wasn’t called

⚑ = @EntryPoint

See also

Source: docs/stdlib/io/net/TcpStream.md · 2 min read · 430 words