//> link: -lpthread import "std/net.zc" import "std/fs.zc" import "std/thread.zc" import "std/result.zc" test "test_net" { "Testing Networking..."; let t = Thread::spawn(fn() { let listener = TcpListener::bind("127.0.0.1", 9090); if (listener.is_err()) { !"Server bind failed"; return; } let l = listener.unwrap(); let client_res = l.accept(); if (client_res.is_err()) { !"Accept failed"; l.close(); return; } let client = client_res.unwrap(); let buf: char* = malloc(100); let n_res = client.read(buf, 100); if (n_res.is_ok()) { let n = n_res.unwrap(); buf[n] = 0; if (strcmp(buf, "Ping") == 0) { client.write("Pong", 4); } } free(buf); client.close(); l.close(); }); if (t.is_err()) { !"Thread spawn failed"; exit(1); } sleep_ms(100); let stream_res = TcpStream::connect("127.0.0.1", 9090); if (stream_res.is_err()) { !"Client connect failed"; exit(1); } let stream = stream_res.unwrap(); stream.write("Ping", 4); let buf2: char* = malloc(100); let n2_res = stream.read(buf2, 100); if (n2_res.is_ok()) { buf2[n2_res.unwrap()] = 0; "Client Received: {buf2}"; } free(buf2); stream.close(); "Net Test Done"; }