summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2024-09-16 04:07:51 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2024-09-16 04:07:51 +0200
commit1c5d09532f18da2a7b6a2a3164380ec76ac11cc1 (patch)
treea7447cc60f4b74240ab8c718d6994c0600d63c8b
parenta88439202868a90745fa56f489ac698bbda73c45 (diff)
downloadprobe-1c5d09532f18da2a7b6a2a3164380ec76ac11cc1.tar.gz
Added Zig and Telnet example using Redis server as Telnet server
-rw-r--r--shell.nix2
-rw-r--r--zig-telnet/Makefile11
-rw-r--r--zig-telnet/main.zig21
3 files changed, 33 insertions, 1 deletions
diff --git a/shell.nix b/shell.nix
index 51f2e15..1c43449 100644
--- a/shell.nix
+++ b/shell.nix
@@ -7,7 +7,7 @@
nasm
tinycc
clang
- zig
+ zig_0_11
zls
# Dev libraries and deps.
diff --git a/zig-telnet/Makefile b/zig-telnet/Makefile
new file mode 100644
index 0000000..346280d
--- /dev/null
+++ b/zig-telnet/Makefile
@@ -0,0 +1,11 @@
+default: write read
+
+write:
+ zig run main.zig
+
+read:
+ echo -e "Reading value back from Redis server"
+ { echo "GET zig"; sleep 1; } | telnet localhost 6379
+
+redis:
+ docker run -p 6379:6379 redis
diff --git a/zig-telnet/main.zig b/zig-telnet/main.zig
new file mode 100644
index 0000000..0f396b9
--- /dev/null
+++ b/zig-telnet/main.zig
@@ -0,0 +1,21 @@
+const std = @import("std");
+
+// NOTE: Start Redis server with either `make redis` which requires
+// Docker to be installed or provide your own Redis instance.
+
+pub fn main() !void {
+ const peer = try std.net.Address.parseIp4("127.0.0.1", 6379);
+ const stream = try std.net.tcpConnectToAddress(peer);
+ defer stream.close();
+
+ std.debug.print("Connecting to Redis server {}\n", .{peer});
+
+ // https://redis.io/docs/latest/commands/set/
+ var writer = stream.writer();
+ const size = try writer.write("SET zig zag\n");
+
+ std.debug.print("Sending to peer, total written: {d} bytes\n", .{size});
+
+ // NOTE: Check if the key was created with:
+ // { echo "GET zig"; sleep 1; } | telnet localhost 6379
+}