// HTTP server example (macOS only) #import "modules/std.sx"; #import "modules/socket.sx"; main :: () -> s32 { PORT :: 8080; fd := socket(AF_INET, SOCK_STREAM, 0); if fd < 0 { print("error: socket()\n"); return 1; } opt : s32 = 1; setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, @opt, 4); addr := SockAddr.{ sin_len = 16, sin_family = 2, sin_port = htons(PORT) }; if bind(fd, addr, 16) < 0 { print("error: bind()\n"); return 1; } if listen(fd, 10) < 0 { print("error: listen()\n"); return 1; } print("listening on http://localhost:{}\n", PORT); while true { client := accept(fd, null, null); if client < 0 { continue; } // Read request buf : [4096]u8 = ---; read(client, buf, buf.len); // Send response body := "

Hello from sx!

"; response := format("HTTP/1.1 200 OK\r Content-Type: text/html\r Connection: close\r Content-Length: {}\r \r {}", body.len, body); write(client, response, response.len); close(client); print(" served request\n"); } close(fd); 0; }