Created
August 8, 2021 10:45
-
-
Save cshenton/2c9a1740e0d4de7b2321aa3831b588f5 to your computer and use it in GitHub Desktop.
Enet Simple Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#define _WINSOCK_DEPRECATED_NO_WARNINGS | |
#define ENET_IMPLEMENTATION | |
#include "enet.h" | |
int main() | |
{ | |
if (enet_initialize() != 0) | |
{ | |
return 1; | |
} | |
ENetHost *client = enet_host_create(NULL, 1, 2, 0, 0); | |
if (!client) | |
{ | |
return 1; | |
} | |
ENetAddress address = {.port = 7777}; | |
enet_address_set_host(&address, "127.0.0.1"); | |
ENetPeer *peer = enet_host_connect(client, &address, 2, 0); | |
if (!peer) | |
{ | |
return 1; | |
} | |
ENetEvent event; | |
if (enet_host_service(client, &event, 5000) <= 0 || event.type != ENET_EVENT_TYPE_CONNECT) | |
{ | |
enet_peer_reset(peer); | |
return 1; | |
} | |
printf("Connected to server\n"); | |
enet_host_service(client, &event, 5000); | |
enet_peer_disconnect(peer, 0); | |
uint8_t disconnected = false; | |
while (enet_host_service(client, &event, 3000) > 0) | |
{ | |
switch (event.type) | |
{ | |
case ENET_EVENT_TYPE_RECEIVE: | |
printf("Received packet from server\n"); | |
enet_packet_destroy(event.packet); | |
break; | |
case ENET_EVENT_TYPE_DISCONNECT: | |
printf("Disconnected by server\n"); | |
disconnected = true; | |
break; | |
default: | |
break; | |
} | |
} | |
if (!disconnected) | |
{ | |
printf("Clean disconnect failed, hard disconnecting\n"); | |
enet_peer_reset(peer); | |
} | |
enet_host_destroy(client); | |
enet_deinitialize(); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#define _WINSOCK_DEPRECATED_NO_WARNINGS | |
#define ENET_IMPLEMENTATION | |
#include "enet.h" | |
int main() | |
{ | |
if (enet_initialize() != 0) | |
{ | |
return 1; | |
} | |
ENetHost *server = enet_host_create(&(ENetAddress){.host = ENET_HOST_ANY, .port = 7777}, 32, 2, 0, 0); | |
if (!server) | |
{ | |
return 1; | |
} | |
printf("Starting server\n"); | |
ENetEvent event; | |
while (enet_host_service(server, &event, 1000) >= 0) | |
{ | |
switch (event.type) | |
{ | |
case ENET_EVENT_TYPE_CONNECT: | |
printf("Client connected\n"); | |
event.peer->data = "Client information"; | |
break; | |
case ENET_EVENT_TYPE_RECEIVE: | |
printf("Packet received\n"); | |
enet_packet_destroy(event.packet); | |
break; | |
case ENET_EVENT_TYPE_DISCONNECT: | |
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT: | |
printf("Client disconnected\n"); | |
event.peer->data = NULL; | |
break; | |
case ENET_EVENT_TYPE_NONE: | |
break; | |
} | |
} | |
enet_host_destroy(server); | |
enet_deinitialize(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The following compile (without warnings, unlike the default examples) on windows (assuming enet.h is in the same directory) with
clang -o server.exe server.c
andclang -o client.exe client.c
.