about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.zig5
-rw-r--r--src/socket-server.zig21
2 files changed, 25 insertions, 1 deletions
diff --git a/src/main.zig b/src/main.zig
index b46023e..e5e4099 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -1,5 +1,6 @@
 const std = @import("std");
 const ls = @import("ls.zig");
+const socket_server = @import("socket-server.zig");
 
 pub fn main() !void {
     var gpa = std.heap.GeneralPurposeAllocator(.{}){};
@@ -18,6 +19,10 @@ pub fn main() !void {
         return;
     }
 
+    if (args.len == 2 and std.mem.eql(u8, args[1], "tcp-foo")) {
+        try socket_server.start_server();
+    }
+
     std.debug.print("Unknown command. Use 'help' for usage information.\n", .{});
     print_help();
 }
diff --git a/src/socket-server.zig b/src/socket-server.zig
index 01c5790..b77c4d5 100644
--- a/src/socket-server.zig
+++ b/src/socket-server.zig
@@ -1,3 +1,22 @@
 const std = @import("std");
+const print = std.debug.print;
+const net = std.net;
 
-pub fn start_server() !void {}
+pub fn start_server() !void {
+    print("Starting server\n", .{});
+
+    const ip = [_]u8{ 127, 0, 0, 1 };
+    const port = 9000;
+
+    const addr = net.Address.initIp4(ip, port);
+
+    var server = try net.Address.listen(addr, .{});
+    print("Listening at {}\n", .{server.listen_address});
+    defer server.deinit();
+
+    while (true) {
+        var connection = try server.accept();
+        _ = try connection.stream.write("Hello, client\n");
+        defer connection.stream.close();
+    }
+}