Объявление структуры C++ и ее использование для хранения соединений IP +C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Объявление структуры C++ и ее использование для хранения соединений IP +

Сообщение Anonymous »

У меня возникла серьезная путаница при объявлении и использовании моей структуры для хранения записи [IP] - [Соединения].
Я пытаюсь вставить в структуру IP-адрес подключения и номер его соединения #, например, если IP 123.123.12 подключается 2 (два) раза, то для этого обновите номер [Соединения] в структуре. IP (123.123.12).
У меня есть следующий код, который должен работать:

Код: Выделить всё

// 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 ?!
}
}
}
}
Хорошо, так что должно быть:
Проверьте новый входящий IP, если он УЖЕ в структуре, затем увеличьте количество соединений для этого ip.
Если новый входящий IP НЕ находится внутри структуры, вставьте его, и если он снова подключится, конечно увеличьте количество соединений.
/>Ниже я собрал минимальный пример, который вы можете без проблем запустить на компьютере с Windows, используя Visual Studio (я использовал 2013).

Код: Выделить всё

#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 

Подробнее здесь: [url]https://stackoverflow.com/questions/32401277/c-structure-declaration-and-usage-to-hold-ip-connections[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»