2010-11-11 4 views
0

Je veux savoir comment puis-je contrôler le taux de mon interface réseau, En fait, je veux recevoir avec un taux de 32 Kbits/s et envoyer les données reçues sur le réseau avec un taux de 1 Mbits/s .. ..do vous avez des idées sur la façon de contrôler le taux de l'interface? .... ou savez-vous des trucs qui pourraient aider? ...comment contrôler le taux de socket?

Merci à l'avance ..

+0

Les débits d'interface réseau sont déterminés par le matériel. Le contrôler nécessite un fer à souder. –

+0

[NetLimiter] (http://www.netlimiter.com/) pourrait vous aider? –

Répondre

0

vous pouvez le faire, vous devez seulement contrôler le temps et effectuer environ pas plus de 32kbits (vous pouvez définir cela dans les arguments de la fonction) en deuxième et même pratique sur envoyer.

0

Je l'ai fait "à la dure" (ne sais pas s'il y a un moyen plus facile). Plus précisément, je l'ai fait en contrôlant la vitesse à laquelle j'ai appelé send() et/ou recv(), et combien de données j'ai indiqué que j'étais prêt à envoyer/recevoir dans chacun de ces appels. Il faut un peu de maths pour bien faire les choses, mais ce n'est pas impossible.

+0

J'ai fait une recherche .. et le résultat était que je peux contrôler le débit comme vous l'avez dit en ajustant les options de socket, comme SO_SNDBUF et SO_RCVBUF, qui indique la taille de la mémoire tampon de la socket de réception et d'envoi ... ex: si je donne un SO_SNDBUF = 16 kbit et un sommeil de 16 ms, je peux obtenir un débit de 1 Mbit/s ... et la même logique pour la réception va bien fonctionner ... Qu'en penses-tu? – fsidiosidi

1

Il existe une différence entre le débit de données et le débit en bauds de la connexion. Généralement, vous voulez que le débit en bauds soit aussi rapide que possible (sans erreurs bien sûr). Certains pilotes de bas niveau ou le système d'exploitation peuvent vous permettre de contrôler cela, mais il s'agit fondamentalement d'un problème matériel/de pilote de bas niveau.

Pour le débit de données, la limitation de l'envoi est simple, n'appelez pas send() aussi rapidement. Cela nécessite que vous suiviez le montant que vous envoyez par période de temps et que vous le limitiez au nombre de places.

La réception peut fonctionner de la même façon, mais vous devez considérer que si quelqu'un envoie plus vite que le débit que vous recevez, il peut y avoir des problèmes.

+0

J'ai fait une recherche ... et le résultat était que je peux contrôler le débit comme vous l'avez dit en ajustant les options de socket, comme SO_SNDBUF et SO_RCVBUF, qui indique la taille de la mémoire tampon de la socket de réception et d'envoi ... ex: si je donne un SO_SNDBUF = 16 kbit et un sommeil de 16 ms, je peux obtenir un débit de 1 Mbit/s ... et la même logique pour la réception va bien fonctionner ... Qu'en penses-tu? – fsidiosidi

Questions connexes