summaryrefslogtreecommitdiff
path: root/examples/networking/echo_server.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-16 10:22:05 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-16 10:28:25 +0000
commit489c393d47ac42dee939e741b732958b082539a7 (patch)
tree9f5619374f605bd276d78ccc5e793a6433ffa6fc /examples/networking/echo_server.zc
parent46b0cfd792a2187d8984f55b9cf59493ec078239 (diff)
Fixed bug related to 'defer' and added some examples.
Diffstat (limited to 'examples/networking/echo_server.zc')
-rw-r--r--examples/networking/echo_server.zc35
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.";
+ }
+ }
+ }
+ }
+}