Je suis en train de développer un robot IRC simple. D'abord je veux penser à un design approprié pour ce projet. L'une des choses que je me pose en ce moment est le mécanisme de lecture. Je développe ce bot sur un système Linux. (Fedora 12) Pour lire depuis une socket, j'utilise l'appel système "read()". Je prévois d'utiliser la fonctionnalité de lecture de la façon suivante (code juste un exemple non quelque chose du produit final.):Mise en mémoire tampon des données de flux
while (uBytesRead = read(iServerSocket, caBuffer, MAX_MESSAGE_SIZE))
{
//1. Parse the buffer and place it into a Message structure.
//2. Add the message structure to a linked list that will act as a queue of message that are to be processed.
}
Ce code sera exécuté dans son propre fil. J'ai choisi cette option car je voulais qu'il y ait le moins de retard possible entre les lectures. (écrit sera mis en œuvre de la même manière) Tout cela est légèrement basé sur des hypothèses, que je voudrais éclaircir. Ma question est la suivante: que se passe-t-il si vous recevez tellement de données à un rythme si rapide que la lecture et le traitement des données (dans ce cas, l'analyse) sont plus lents que la vitesse de transmission des données. sera tamponné par le système. Est-ce une bonne hypothèse? Et si oui:
- Quelle est la taille de ce tampon?
- Que se passe-t-il avec les données entrantes lorsque ce tampon est plein?
- Pour que mon application soit protégée contre le spam, comment puis-je le traiter au mieux?
J'espère avoir expliqué mon problème assez clairement.
Merci d'avance.
Aha ok ça éclaircit les choses. Le protocole IRC énonce quelques règles concernant le contrôle d'inondation, donc je pense que la question d'un tampon d'envoi se remplissant du côté serveur ne sera pas vraiment un problème. Je me demandais comment ça fonctionnait. J'ai regardé la page MAN pour lire mais ça ne m'a pas beaucoup plu sur ce sujet, alors merci beaucoup! – Beldoroon