This commit is contained in:
Anonymous275
2020-04-09 20:37:38 +03:00
parent 104856938a
commit 3c244c7e7f
11 changed files with 73 additions and 50 deletions

View File

@@ -3,23 +3,30 @@
//
#include "enet.h"
#include <iostream>
#include <string>
#include <vector>
#include "../logger.h"
using namespace std;
char Name[20] = "";
void ParseData(ENetPacket*packet,ENetPeer*peer){ //here we will parse the data
enet_uint8* Data = packet->data;
std::vector<std::string> Split(const std::string& String,const std::string& delimiter);
void OnConnect(ENetPeer*peer,const std::string& data);
void ParseData(ENetPacket*packet,ENetPeer*peer){ //here we will parse the data
std::string Packet = (char*)packet->data;
int off = stoi(Packet.substr(0, 2));
std::string header = Packet.substr(2, off - 2), data = Packet.substr(off);
std::vector<std::string> split;
if(!header.empty()) {
std::cout << header << " header size : " << header.size() << std::endl;
split = Split(header, ":"); //1st is reliable - 2nd is Code - 3rd is VehID
}
if(!data.empty()){
switch (stoi(split.at(1))){
case 2000:
OnConnect(peer,data);
break;
}
//std::cout << data << std::endl;
}
cout << "Data : " << packet->data << std::endl;
cout << "Size : " << strlen(reinterpret_cast<const char *>(packet->data)) << std::endl;
/*if(strcmp((char*)peer->Name,"Client information")==0){ //Checks if the Client has no name
sprintf(Name,"%s",Data);
peer->Name = (void *)Name;
char Info[100];
sprintf(Info,"Client Name is %s ID : %u\n",Name,peer->connectID); //ID System
info(Info); //Logs the data
peer->serverVehicleID = (int)peer->connectID; //test to see if it works
sprintf(Info,"%s ServerVehicleID : %d GameVehicleID : %d",Name,peer->serverVehicleID,peer->gameVehicleID[0]);
info(Info);
}*/
}

View File

@@ -5,11 +5,11 @@
#define ENET_IMPLEMENTATION
#include "enet.h"
#include <string>
#include <stdio.h>
#include <cstdio>
#include "../logger.h"
void ParseData(ENetPacket*packet,ENetPeer*peer); //Data Parser
void NameRequest(ENetPeer*peer);
void SendToAll(ENetHost *server,ENetEvent event);
ENetPacket* packet;
@@ -20,13 +20,10 @@ void host_server(ENetHost *server) {
case ENET_EVENT_TYPE_CONNECT:
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
NameRequest(event.peer);
event.peer->Name = (void *)"Client information";
event.peer->gameVehicleID[0] = 15;
event.peer->serverVehicleID = 17;
SendToAll(server,event);
break;
case ENET_EVENT_TYPE_RECEIVE:
@@ -38,12 +35,12 @@ void host_server(ENetHost *server) {
case ENET_EVENT_TYPE_DISCONNECT:
printf ("%s disconnected.\n", (char *)event.peer->Name);
// Reset the peer's client information.
event.peer->Name = NULL;
event.peer->Name = nullptr;
break;
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
printf ("%s timed out.\n", (char *)event.peer->Name);
event.peer->Name = NULL;
event.peer->Name = nullptr;
break;
case ENET_EVENT_TYPE_NONE: break;
@@ -66,7 +63,7 @@ void ServerMain(int Port, int MaxClients) {
//create a server
info("starting server with a maximum of " + to_string(MaxClients) + " Clients...");
server = enet_host_create(&address, MaxClients, 2, 0, 0);
if (server == NULL) {
if (server == nullptr) {
error("An error occurred while trying to create a server host.");
return;
}

30
src/Network/functions.cpp Normal file
View File

@@ -0,0 +1,30 @@
///
/// Created by Anonymous275 on 4/1/2020
///
#include "enet.h"
#include <vector>
#include "../logger.h"
std::vector<std::string> Split(const std::string& String,const std::string& delimiter){
std::vector<std::string> Val;
size_t pos = 0;
std::string token,s = String;
while ((pos = s.find(delimiter)) != std::string::npos) {
token = s.substr(0, pos);
Val.push_back(token);
s.erase(0, pos + delimiter.length());
}
Val.push_back(s);
return Val;
}
void OnConnect(ENetPeer*peer,const std::string& data){
std::vector<std::string> Data = Split(data,":");
if(strcmp((char*)peer->Name,"Client information")==0){ //Checks if the Client has no name
peer->Name = (void *)Data.at(0).c_str();
char Info[100];
info("Client Name is " + Data.at(0) + " ID : " + std::to_string(peer->connectID)); //ID System //Logs the data
peer->serverVehicleID = (int)peer->connectID; //test to see if it works
info(Data.at(0)+" ServerVehicleID : "+std::to_string(peer->serverVehicleID)+" GameVehicleID : " + std::to_string(peer->gameVehicleID[0]));
}
}