1// https://www.rfc-editor.org/rfc/rfc2616
 2
 3// NOTE: This is just a barebones example and it has a bunch of bugs there
 4//       so do not use this for anything seriously.
 5
 6const std = @import("std");
 7
 8pub fn main() anyerror!void {
 9    const self_addr = try std.net.Address.resolveIp("127.0.0.1", 6969);
10    var listener = std.net.StreamServer.init(.{});
11    try (&listener).listen(self_addr);
12
13    std.log.info("Listening on {}; press Ctrl-C to exit...", .{self_addr});
14
15    while ((&listener).accept()) |conn| {
16        std.log.info("Accepted Connection from: {}", .{conn.address});
17
18        // Basic HTTP 1.1 header.
19        _ = try conn.stream.write("HTTP/1.1 200 OK\r\n");
20        _ = try conn.stream.write("Connection: close\r\n");
21        _ = try conn.stream.write("Content-Type: text/html; charset=utf-8\r\n");
22        _ = try conn.stream.write("\r\n");
23
24        // Actual response.
25        _ = try conn.stream.write("<h1>Oh, hi Mark!</h1><p>It’s not true! It’s bullshit! I did not hit her! I did not!</p>\r\n");
26
27        conn.stream.close();
28    } else |err| {
29        return err;
30    }
31}