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 {
|
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);
|
||||||
|
@@ -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.
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
const c = @This();
|
||||||
|
|
||||||
pub usingnamespace @cImport({
|
pub usingnamespace @cImport({
|
||||||
@cInclude("enet/enet.h");
|
@cInclude("enet/enet.h");
|
||||||
});
|
});
|
||||||
|
@@ -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.
|
||||||
|
Reference in New Issue
Block a user