Added Zig and Telnet example using Redis server as Telnet server

Author Mitja Felicijan <mitja.felicijan@gmail.com> 2024-09-16 04:07:51 +0200
Committer Mitja Felicijan <mitja.felicijan@gmail.com> 2024-09-16 04:07:51 +0200
Commit 1c5d09532f18da2a7b6a2a3164380ec76ac11cc1 (patch)
-rw-r--r-- shell.nix 2
-rw-r--r-- zig-telnet/Makefile 11
-rw-r--r-- zig-telnet/main.zig 21
3 files changed, 33 insertions, 1 deletions
diff --git a/shell.nix b/shell.nix
...
7
		nasm
7
		nasm
8
		tinycc
8
		tinycc
9
		clang
9
		clang
10
		zig
10
		zig_0_11
11
		zls
11
		zls
12
  
12
  
13
		# Dev libraries and deps.
13
		# Dev libraries and deps.
...
diff --git a/zig-telnet/Makefile b/zig-telnet/Makefile
  
1
default: write read
  
2
  
  
3
write:
  
4
	zig run main.zig
  
5
  
  
6
read:
  
7
	echo -e "Reading value back from Redis server"
  
8
	{ echo "GET zig"; sleep 1; } | telnet localhost 6379
  
9
  
  
10
redis:
  
11
	docker run -p 6379:6379 redis
diff --git a/zig-telnet/main.zig b/zig-telnet/main.zig
  
1
const std = @import("std");
  
2
  
  
3
// NOTE: Start Redis server with either `make redis` which requires
  
4
//       Docker to be installed or provide your own Redis instance.
  
5
  
  
6
pub fn main() !void {
  
7
    const peer = try std.net.Address.parseIp4("127.0.0.1", 6379);
  
8
    const stream = try std.net.tcpConnectToAddress(peer);
  
9
    defer stream.close();
  
10
  
  
11
    std.debug.print("Connecting to Redis server {}\n", .{peer});
  
12
  
  
13
    // https://redis.io/docs/latest/commands/set/
  
14
    var writer = stream.writer();
  
15
    const size = try writer.write("SET zig zag\n");
  
16
  
  
17
    std.debug.print("Sending to peer, total written: {d} bytes\n", .{size});
  
18
  
  
19
    // NOTE: Check if the key was created with:
  
20
    //       { echo "GET zig"; sleep 1; } | telnet localhost 6379
  
21
}