Я пытаюсь сравнить значения в этих двух символьных указателей, но я получаю странные выходы:Сравнить Const символ * и символ *
Первый (IP-адрес): Libpcap
const char* ip_source = inet_ntop(AF_INET, &ip->ip_src, buffer1, sizeof(buffer1)); //192.168.56.1
Второй является:
char *host_ip = inet_ntoa(((struct sockaddr_in*)a->addr)->sin_addr); //192.168.56.1
Я попытался с помощью if (*ip_source == *host_ip)
, if (strcmp(ip_source, host_ip) == 0)
и if (strncmp(ip_source, host_ip, strlen(host_ip))
.
Как сравнить IP-адреса, хранящиеся в этих двух переменных, чтобы определить, одинаковы ли оба IP-адреса?
Это код:
if (strncmp(ip_source, host_ip, strlen(host_ip)) == 0) // if sent local > remote
{
printf(" RST/ACK Detected [Local > Remote]\n");
}
else // if sent remote > local
{
printf(" RST/ACK Detected [Remote > Local]\n");
}
Это результат:
Packet number 2386:
current time: 2015-04-11 15:07:59.412
From(src): 192.168.56.1 <---- Local (IP stored in *host_ip)
To(dst): 192.168.56.2 <---- Remote
Protocol: TCP
Src port: 1864
Dst port: 49750
Seq Num: 0
Ack Num: 3556812524
RST/ACK Detected [Remote > Local] <--- Wrong
В этом случае это возвращение -2
Что это за странные выходы? –
Похоже, что он не прошел тест, но он зависит от входящих сетевых данных, я пытаюсь выяснить, есть ли проблема с этим тестом 'if', базой данных или данными. – Crizly
@ValentinLorentz добавил к вопросу – Crizly