working enet connection
This commit is contained in:
10
build.zig
10
build.zig
@@ -2,7 +2,6 @@ const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
const enet_real = b.dependency("enet_real", .{});
|
||||
@@ -11,6 +10,7 @@ pub fn build(b: *std.Build) void {
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
.sanitize_c = false,
|
||||
});
|
||||
enet.addCSourceFiles(.{
|
||||
.root = enet_real.path(""),
|
||||
@@ -30,7 +30,7 @@ pub fn build(b: *std.Build) void {
|
||||
|
||||
const client = b.addExecutable(.{
|
||||
.name = "client",
|
||||
.root_source_file = .{ .path = "src/main.zig" },
|
||||
.root_source_file = .{ .path = "src/client.zig" },
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
@@ -39,7 +39,7 @@ pub fn build(b: *std.Build) void {
|
||||
|
||||
const server = b.addExecutable(.{
|
||||
.name = "server",
|
||||
.root_source_file = .{ .path = "src/main.zig" },
|
||||
.root_source_file = .{ .path = "src/server.zig" },
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
@@ -66,13 +66,13 @@ pub fn build(b: *std.Build) void {
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
client.root_module.addImport("enet", enet);
|
||||
client_tests.root_module.addImport("enet", enet);
|
||||
const server_tests = b.addTest(.{
|
||||
.root_source_file = .{ .path = "src/server.zig" },
|
||||
.target = target,
|
||||
.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_server_tests = b.addRunArtifact(server_tests);
|
||||
|
@@ -8,6 +8,36 @@ const SHA = std.crypto.hash.sha2.Sha256;
|
||||
pub fn main() !void {
|
||||
if (enet.enet_initialize() != 0) return error.ENetInitFailed;
|
||||
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.
|
||||
|
@@ -1,3 +1,5 @@
|
||||
const c = @This();
|
||||
|
||||
pub usingnamespace @cImport({
|
||||
@cInclude("enet/enet.h");
|
||||
});
|
||||
|
@@ -8,6 +8,28 @@ const SHA = std.crypto.hash.sha2.Sha256;
|
||||
pub fn main() !void {
|
||||
if (enet.enet_initialize() != 0) return error.ENetInitFailed;
|
||||
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.
|
||||
|
Reference in New Issue
Block a user