mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2025-07-03 00:05:34 +00:00
Added ClientHandler + Polished some code
This commit is contained in:
parent
4e47f36d84
commit
c47e8783e6
@ -3,5 +3,5 @@ project(BeamNG-MP-Server)
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
|
||||||
add_executable(BeamNG-MP-Server src/main.cpp src/logger.cpp src/config.cpp src/Network/Server.cpp src/Network/enet.h src/Network/DataParser.cpp src/heartbeat.cpp src/heartbeat.h)
|
add_executable(BeamNG-MP-Server src/main.cpp src/logger.cpp src/config.cpp src/Network/Server.cpp src/Network/enet.h src/Network/DataParser.cpp src/heartbeat.cpp src/heartbeat.h src/Network/ClientHandler.cpp)
|
||||||
target_link_libraries(BeamNG-MP-Server winmm ws2_32)
|
target_link_libraries(BeamNG-MP-Server winmm ws2_32)
|
26
src/Network/ClientHandler.cpp
Normal file
26
src/Network/ClientHandler.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// Created by Anonymous275 on 2/4/2020.
|
||||||
|
//
|
||||||
|
#include "enet.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
void NameRequest(ENetPeer*peer){
|
||||||
|
ENetPacket* packet = enet_packet_create ("NameRequest", //Send A Name Request to the Client
|
||||||
|
strlen ("NameRequest") + 1,
|
||||||
|
ENET_PACKET_FLAG_RELIABLE); //Create A reliable packet using the data
|
||||||
|
enet_peer_send(peer, 0, packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SendToAll(ENetHost *server,ENetEvent event){
|
||||||
|
ENetPacket* packet;
|
||||||
|
for (int i = 0; i < server->connectedPeers; i++) {
|
||||||
|
//if (&server->peers[i] != event.peer) { if you don't want to send it to the person ho just connected
|
||||||
|
char Data[30];
|
||||||
|
sprintf(Data,"There is %d Players Connected!",server->connectedPeers);
|
||||||
|
packet = enet_packet_create(Data, strlen(Data)+1, 0);
|
||||||
|
enet_peer_send(&server->peers[i], 0, packet);
|
||||||
|
enet_host_flush(server);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,18 @@
|
|||||||
//
|
//
|
||||||
// Created by Anonymous275 on 1/29/2020.
|
// Created by Anonymous275 on 4/2/2020.
|
||||||
//
|
//
|
||||||
#include "enet.h"
|
#include "enet.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
void ParseData(size_t Length, enet_uint8* Data, char* Sender, enet_uint8 ChannelID){ //here we will parse the data
|
#include "../logger.h"
|
||||||
printf("A packet of length %zu containing \"%s\" was received from \"%s\" on channel %u.\n",
|
using namespace std;
|
||||||
Length,
|
char Name[20] = "";
|
||||||
Data,
|
void ParseData(ENetPacket*packet,ENetPeer*peer){ //here we will parse the data
|
||||||
Sender,
|
enet_uint8* Data = packet->data;
|
||||||
ChannelID);
|
if(strcmp((char*)peer->data,"Client information")==0){ //Checks if the Client has no name
|
||||||
|
sprintf(Name,"%s",Data);
|
||||||
|
peer->data = (void *)Name;
|
||||||
|
char Info[100];
|
||||||
|
sprintf(Info,"Client Name is %s ID : %u\n",Name,peer->connectID); //ID System
|
||||||
|
info(Info); //Logs the data
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,22 +1,33 @@
|
|||||||
|
//
|
||||||
|
// Created by Anonymous275 on 4/2/2020.
|
||||||
|
//
|
||||||
|
|
||||||
#define ENET_IMPLEMENTATION
|
#define ENET_IMPLEMENTATION
|
||||||
#include "enet.h"
|
#include "enet.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "../logger.h"
|
#include "../logger.h"
|
||||||
|
void ParseData(ENetPacket*packet,ENetPeer*peer); //Data Parser
|
||||||
|
void NameRequest(ENetPeer*peer);
|
||||||
|
void SendToAll(ENetHost *server,ENetEvent event);
|
||||||
|
ENetPacket* packet;
|
||||||
|
|
||||||
|
|
||||||
void ParseData(size_t Length, enet_uint8* Data, char* Sender, enet_uint8 ChannelID); //Data Parser
|
|
||||||
void host_server(ENetHost *server) {
|
void host_server(ENetHost *server) {
|
||||||
ENetEvent event;
|
ENetEvent event;
|
||||||
while (enet_host_service(server, &event, 2) > 0) {
|
while (enet_host_service(server, &event, 2) > 0) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case ENET_EVENT_TYPE_CONNECT:
|
case ENET_EVENT_TYPE_CONNECT:
|
||||||
printf("new Client Connected ::1:%u.\n", event.peer->address.port);
|
printf("A new client connected from %x:%u.\n", event.peer->address.host, event.peer->address.port); //Help xD
|
||||||
|
|
||||||
//the data should be the client info could be name for now it's Client information
|
//the data should be the client info could be name for now it's Client information
|
||||||
|
NameRequest(event.peer);
|
||||||
event.peer->data = (void *)"Client information";
|
event.peer->data = (void *)"Client information";
|
||||||
|
|
||||||
|
SendToAll(server,event);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ENET_EVENT_TYPE_RECEIVE:
|
case ENET_EVENT_TYPE_RECEIVE:
|
||||||
ParseData(event.packet->dataLength,event.packet->data, (char *)event.peer->data, event.channelID); //We grab and Parse the Data
|
ParseData(event.packet,event.peer/*->dataLength,event.packet->data, (char *)event.peer->data, event.channelID*/); //We grab and Parse the Data
|
||||||
/* Clean up the packet now that we're done using it. */
|
/* Clean up the packet now that we're done using it. */
|
||||||
enet_packet_destroy (event.packet);
|
enet_packet_destroy (event.packet);
|
||||||
break;
|
break;
|
||||||
@ -28,7 +39,7 @@ void host_server(ENetHost *server) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
|
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
|
||||||
printf ("%s timeout.\n", (char *)event.peer->data);
|
printf ("%s timed out.\n", (char *)event.peer->data);
|
||||||
event.peer->data = NULL;
|
event.peer->data = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -47,11 +58,10 @@ void ServerMain(int Port, int MaxClients) {
|
|||||||
|
|
||||||
ENetAddress address = {0};
|
ENetAddress address = {0};
|
||||||
|
|
||||||
address.host = ENET_HOST_ANY; /* Bind the server to the default localhost. */
|
address.host = ENET_HOST_ANY; //Bind the server to the default localhost.
|
||||||
address.port = Port; /* Bind the server to port 7777. */
|
address.port = Port; // Sets the port
|
||||||
|
|
||||||
|
//create a server
|
||||||
/* create a server */
|
|
||||||
info("starting server with a maximum of " + to_string(MaxClients) + " Clients...");
|
info("starting server with a maximum of " + to_string(MaxClients) + " Clients...");
|
||||||
server = enet_host_create(&address, MaxClients, 2, 0, 0);
|
server = enet_host_create(&address, MaxClients, 2, 0, 0);
|
||||||
if (server == NULL) {
|
if (server == NULL) {
|
||||||
@ -69,4 +79,3 @@ void ServerMain(int Port, int MaxClients) {
|
|||||||
enet_deinitialize();
|
enet_deinitialize();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Created by jojos38 on 28.01.2020.
|
// Created by Anonymous275 on 4/2/2020.
|
||||||
//
|
//
|
||||||
|
|
||||||
#define LOGGER_H
|
#define LOGGER_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user