Skip to content

Instantly share code, notes, and snippets.

@cshenton
Created August 8, 2021 10:45
Show Gist options
  • Save cshenton/2c9a1740e0d4de7b2321aa3831b588f5 to your computer and use it in GitHub Desktop.
Save cshenton/2c9a1740e0d4de7b2321aa3831b588f5 to your computer and use it in GitHub Desktop.
Enet Simple Example
#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;
}
#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;
}
@cshenton
Copy link
Author

cshenton commented Aug 8, 2021

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 and clang -o client.exe client.c.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment