Listening TCP acceptor wrapper for incoming connections.
valid? reports only whether the wrapper holds one non-invalid listening handle.accept returns one connection wrapper, one host-order IPv4 address, and one result string.TcpAcceptor owns one listening socket. Destroying it closes that socket.valid? |
(-- valid) |
Reports whether the handle refers to one listening acceptor. |
accept is one blocking sync-level wait.accept returns when one connection is accepted, cancellation is observed, or an error is produced."canceled" means cancellation was observed before a successful accept completed.accept leaves the acceptor valid for later accepts until it is destroyed.address is one host-order IPv4 Nat32 value."sync/sync" use
"String" use
"control" use
{} Int32 {} [
server: [
result: String;
acceptor: 0x7F000001n32 6612n16 listenTcp !result;
[result.size 0 =] "listenTcp failed" ensure
connection: address: acceptor.accept !result;;
[result.size 0 =] "accept failed" ensure
address ipv4ToString print
LF print
];
client: [
result: String;
connection: 0x7F000001n32 6612n16 connectTcp !result;
[result.size 0 =] "connectTcp failed" ensure
];
serverContext: @server () spawn;
clientContext: @client () spawn;
@serverContext.wait
@clientContext.wait
0
] "main" exportFunction
127.0.0.1