Ich versuche, die IP-Adresse, die eine Verbindung herstellt, in die Struktur einzufügen, und ihre Verbindungsnummer #, zum Beispiel wenn IP 123.123.12 zwei (zwei) Mal eine Verbindung herstellt, dann aktualisiere die [Verbindungen]-Nummer in der Struktur dafür IP (123.123.12).
Ich habe den folgenden Code, der funktionieren sollte:
Code: Select all
// the struct
typedef struct {
int id; // is this useful anyway?
char *ip;
int connNumbers;
}test_sock;
// init struct
test_sock holder[5000];
int len = 0;
// the function
void AddtoStruct(char *ip)
{
if (len == 0) //if empty, insert.
{
len++;
holder->id = len;
holder->ip = ip;
holder->connNumbers = 1; //1 conexiune
return;
}
for (int i = 0; iid != 0) //check if its the same id !?
{
//Exista deja in structura , doar increase connNumbers;
if (strcmp(ip, holder->ip) == 0)
{
holder++;
holder->connNumbers++;
holder->id = antiddos_len;
holder->ip = ip;
return; // should return or not ?!
}
else{ //new IP, insert into struct.
len++; // COUNT AGAIN ?
holder->id = len;
holder->ip = ip;
holder->connNumbers = 1; // 1 connection
return; // should return or not ?!
}
}
}
}
Überprüfen Sie die neue eingehende IP, wenn sie BEREITS in der Struktur ist, und erhöhen Sie dann die Anzahl der Verbindungen für diese IP.
Wenn die neue eingehende IP NICHT in der Struktur ist, fügen Sie sie ein, und wenn sie erneut eine Verbindung herstellt, erhöhen Sie natürlich die Anzahl der Verbindungen.
I Nachfolgend habe ich ein Minimalbeispiel zusammengestellt, das Sie problemlos auf einem Windows-Computer mit Visual Studio ausführen können (ich habe 2013 verwendet).
Code: Select all
#include "stdafx.h"
#include
#include
using namespace std;
// the struct
typedef struct {
int id; // is this useful anyway?
char *ip;
int connNumbers;
}test_sock;
// init struct
test_sock holder[5000];
int len = 0;
// the function
void AddtoStruct(char *ip)
{
if (len == 0) //if the struct is empty, insert.
{
len++;
holder->id = len;
holder->ip = ip;
holder->connNumbers = 1; //1 conexiune
cout
Mobile version