working enet connection

This commit is contained in:
David Allemang
2024-03-05 17:23:32 -05:00
parent bd05dae216
commit e9663d62fa
4 changed files with 59 additions and 5 deletions

View File

@@ -2,7 +2,6 @@ const std = @import("std");
pub fn build(b: *std.Build) void { pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{}); const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{}); const optimize = b.standardOptimizeOption(.{});
const enet_real = b.dependency("enet_real", .{}); const enet_real = b.dependency("enet_real", .{});
@@ -11,6 +10,7 @@ pub fn build(b: *std.Build) void {
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
.link_libc = true, .link_libc = true,
.sanitize_c = false,
}); });
enet.addCSourceFiles(.{ enet.addCSourceFiles(.{
.root = enet_real.path(""), .root = enet_real.path(""),
@@ -30,7 +30,7 @@ pub fn build(b: *std.Build) void {
const client = b.addExecutable(.{ const client = b.addExecutable(.{
.name = "client", .name = "client",
.root_source_file = .{ .path = "src/main.zig" }, .root_source_file = .{ .path = "src/client.zig" },
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
}); });
@@ -39,7 +39,7 @@ pub fn build(b: *std.Build) void {
const server = b.addExecutable(.{ const server = b.addExecutable(.{
.name = "server", .name = "server",
.root_source_file = .{ .path = "src/main.zig" }, .root_source_file = .{ .path = "src/server.zig" },
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
}); });
@@ -66,13 +66,13 @@ pub fn build(b: *std.Build) void {
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
}); });
client.root_module.addImport("enet", enet); client_tests.root_module.addImport("enet", enet);
const server_tests = b.addTest(.{ const server_tests = b.addTest(.{
.root_source_file = .{ .path = "src/server.zig" }, .root_source_file = .{ .path = "src/server.zig" },
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
}); });
server.root_module.addImport("enet", enet); server_tests.root_module.addImport("enet", enet);
const run_client_tests = b.addRunArtifact(client_tests); const run_client_tests = b.addRunArtifact(client_tests);
const run_server_tests = b.addRunArtifact(server_tests); const run_server_tests = b.addRunArtifact(server_tests);

View File

@@ -8,6 +8,36 @@ const SHA = std.crypto.hash.sha2.Sha256;
pub fn main() !void { pub fn main() !void {
if (enet.enet_initialize() != 0) return error.ENetInitFailed; if (enet.enet_initialize() != 0) return error.ENetInitFailed;
defer enet.enet_deinitialize(); defer enet.enet_deinitialize();
const addr = enet.ENetAddress{
.host = enet.ENET_HOST_ANY,
.port = enet.ENET_PORT_ANY,
};
const host = enet.enet_host_create(&addr, 32, 1, 0, 0) orelse return error.ENetHostCreateFailed;
defer enet.enet_host_destroy(host);
var server_addr = enet.ENetAddress{
.host = enet.ENET_HOST_ANY,
.port = 9405,
};
_ = enet.enet_address_set_host(&server_addr, "localhost");
const peer = enet.enet_host_connect(host, &server_addr, 1, 0);
_ = peer;
var event: enet.ENetEvent = undefined;
while (true) {
while (enet.enet_host_service(host, &event, 100) > 0) {
switch (event.type) {
enet.ENET_EVENT_TYPE_CONNECT => {
std.debug.print("client: connected to peer {any}\n", .{event.peer.*.address});
},
else => {
std.debug.print("client: other event...\n", .{});
},
}
}
}
} }
// it even works in ReleaseFast so I think it's ok. // it even works in ReleaseFast so I think it's ok.

View File

@@ -1,3 +1,5 @@
const c = @This();
pub usingnamespace @cImport({ pub usingnamespace @cImport({
@cInclude("enet/enet.h"); @cInclude("enet/enet.h");
}); });

View File

@@ -8,6 +8,28 @@ const SHA = std.crypto.hash.sha2.Sha256;
pub fn main() !void { pub fn main() !void {
if (enet.enet_initialize() != 0) return error.ENetInitFailed; if (enet.enet_initialize() != 0) return error.ENetInitFailed;
defer enet.enet_deinitialize(); defer enet.enet_deinitialize();
const addr = enet.ENetAddress{
.host = enet.ENET_HOST_ANY,
.port = 9405,
};
const host = enet.enet_host_create(&addr, 32, 1, 0, 0) orelse return error.ENetHostCreateFailed;
defer enet.enet_host_destroy(host);
var event: enet.ENetEvent = undefined;
while (true) {
while (enet.enet_host_service(host, &event, 100) > 0) {
switch (event.type) {
enet.ENET_EVENT_TYPE_CONNECT => {
std.debug.print("server: connected to peer {any}\n", .{event.peer.*.address});
},
else => {
std.debug.print("server: other event...\n", .{});
},
}
}
}
} }
// it even works in ReleaseFast so I think it's ok. // it even works in ReleaseFast so I think it's ok.