Tout d'abord, je n'ai jamais travaillé avec C avant (principalement Java, c'est la raison pour laquelle vous me trouverez écrire du code C naïf). Je suis en train d'écrire un interpréteur de commande simple C. J'ai quelque chose comme ceci:C: En utilisant un appel select, quand je lis, comment puis-je garder une trace des données?
//Initialization code
if (select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1) {
perror("Select dead");
exit(EXIT_FAILURE);
}
....
....
//Loop through connections to see who has the data ready
//If the data is ready
if ((nbytes = recv(i, buf, sizeof(buf), 0)) > 0) {
//Do something with the message in the buffer
}
Maintenant, si je regarde quelque chose comme un long paragraphe de commandes, il est évident qu'un tampon de 256 octets ne sera pas en mesure pour obtenir la commande entière. Pour le moment, j'utilise un tampon de 2056 octets pour obtenir la commande entière. Mais si je veux utiliser le tampon de 256 octets, comment pourrais-je faire cela? Est-ce que je garde la trace du client qui m'a donné quelles données et l'a ajouté à un tampon? Je veux dire, utiliser quelque chose comme des tableaux bidimensionnels et autres?
Parfait! Je ne connaissais pas l'attaque slowloris ... Merci beaucoup aux autres aussi ... – Legend