/
nv-lang
/
nova
Обзор
Документация
Войти
/
nv-lang
/
nova
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
examples/net/echo_server.nv
55 строк
2 KB
Evgeniy Golovin
std(№492): write_str удалён, 13 носителей на .write(); спека приведена к реализации; №493-496, план 257
09 авг 2026, 02:46
09 авг 2026, 02:46
1ce43d8
Код
Авторство
О чём код?
// SPDX-License-Identifier: MIT OR Apache-2.0 // Echo server example. Listens on 127.0.0.1:7777, accepts one connection, // reads data, echoes it back. Demonstrates TcpListener + TcpStream async // API. // // Usage: // nova build examples/net/echo_server.nv -o echo_server && ./echo_server // # In another terminal: // echo "hello nova" | nc 127.0.0.1 7777 // // See also: examples/net/echo_client.nv module net.echo_server import std.net.{SocketAddr, TcpListener, real_net} const PORT u16 = 7777 fn main() { with Net = real_net() { ro addr = SocketAddr.loopback(PORT) supervised { spawn { // listener живёт целиком в серверном fiber'е (bind/accept/close) // — mut-захват внешнего listener'а телом spawn был бы // E_CONCURRENT_MUT_CAPTURE. consume lst = match TcpListener.bind(addr) { Ok(consume l) => l Err(_) => panic("Failed to bind: ${PORT}") } println("Listening on 127.0.0.1:${lst.local_port()}") // Accept one connection and echo data back. match lst.accept() { Ok(consume s) => { println("Client connected from port ${s.peer_port()}") match s.read_bytes(4096) { Ok(_data) => { match s.write("echo_ok\n") { Ok(_) => println("Echo sent") Err(_) => println("Write failed") } } Err(_) => println("Read failed") } s.close() } Err(_) => println("Accept failed") } lst.close() println("Done") } } } }