diff options
Diffstat (limited to 'examples/networking')
| -rw-r--r-- | examples/networking/echo_server.zc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/networking/echo_server.zc b/examples/networking/echo_server.zc new file mode 100644 index 0000000..1cecb74 --- /dev/null +++ b/examples/networking/echo_server.zc @@ -0,0 +1,35 @@ + +import "std/net.zc" + +fn main() { + "Starting Echo Server on 127.0.0.1:8080..."; + + var listener_res = TcpListener::bind("127.0.0.1", 8080); + if listener_res.is_err() { + !"Failed to bind: {listener_res.err}"; + return 1; + } + + var listener = listener_res.unwrap(); + defer listener.close(); + + loop { + var client_res = listener.accept(); + if client_res.is_ok() { + var stream = client_res.unwrap(); + defer stream.close(); + + var buf: char[1024]; + + var read_res = stream.read(buf, 1024); + + if read_res.is_ok() { + var bytes = read_res.unwrap(); + if bytes > 0 { + stream.write(buf, bytes); + "Echoed {bytes} bytes."; + } + } + } + } +} |
