C Logische Operatoren if-Anweisung ODER UND
Etwas ist falsch mit dieser Logik-es erkennt alles und druckt bad pkt detected
.
if((buff[0] != 0x0a || buff[0] != 0x0e) && (len == 210))
{
printf("badpkt detected from %s\n", xpi);
} else {
if(mysend(ssl_sd ? ssl_sd[i] : NULL, sd[i], buff, len) <= 0) MULTI_SKIP_QUIT
}
Logik VERWEIGERN alle Pakete, die 210 in der Länge. Außer wenn das 1. byte 0x0A oder 0x0E.
Dieser code funktioniert aber nicht:
if((buff[0] != 0x0a) && (len == 210))
{
printf("badpkt detected from %s\n", xpi);
} else {
if(mysend(ssl_sd ? ssl_sd[i] : NULL, sd[i], buff, len) <= 0) MULTI_SKIP_QUIT
}
Aber ich brauche beide 0x0a
und 0x0e
nur 210 Länge packet erlaubt.
Bearbeiten
Was dachte ich, vielleicht ist es der Mangel an Schlaf.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie diese Logik:
Mit dieser Bedingung:
vorstellen
buff[0]
ist0x0e
. Dannbuff[0] != 0x0a
wird wahr sein, das macht das ganze sub Ausdruck(buff[0] != 0x0a || buff[0] != 0x0e)
wahr sein.Könnte man auch umkehren der Bedingung:
Wenn Sie wollen, sowohl
0x0a
und0x0e
erlaubt, müssen Sie diese Bedingung verwenden :Diese
(buff[0] != 0x0a || buff[0] != 0x0e)
ist immer wahr.Sollte es
if(buff[0] != 0x0a && buff[0] != 0x0e && (len == 210))