Bonjour tout le monde,
J'essaie de développer un application d'analyse réseau (genre iPerf, mais en graphique) avec Delphi 2006. J'en suis qu'aux balbusciements mais je rencontre déjà 2 gros problèmes qui sont :
- Comment calculer le temps que met un paquet entre le logiciel client et le logiciel serveur (temps de latence)
- Quel moyen utiliser pour calculer le débit entre le client et le serveur
- Et y a-t-il un moyen de choisir la taille de fenêtrage TCP avec un composant delphi ?
Pour l'instant, j'ai essayé d'utiliser SNTP grâce au composant Indy TIdSNTP pour synchroniser les 2 horloges de mes PC afin de calculer la latence. Mais le résultat n'a pas l'air de marcher à 100%.
Il faudrait une solution qui fonctionne en TCP et en UDP, donc pas de ping, ni de comptage aller-retour divisé par 2...
Pour la bande passante, j'envoie un tableau de Char de grandeur variable (l'utilisateur pouvant ainsi définir la taille qu'il veut envoyer) grâce au composant TIdTCPClient. Cependant, quand je compare les résultats avec iPerf, je n'arrive pas du tout à la même chose :
Ca fait en tout cas une voire deux bonne semaine que je suis la dessus. Je commence à déprimer de ne rien trouver. Je vous remercie déjà pour toutes les petites ou grandes aides que vous pourrez m'apporter !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 taille := StrToInt(EdtTailleData.Text); //Nbr d'octets à envoyer try SetLength(data, taille); //On crée le tableau de taille voulue for i := 0 to taille-1 do data[i] := 9; //Pour chaque élément on aloue une valeur test except ShowMessage('Erreur tableau'); end; IdTCPClient.WriteBuffer(taille, SizeOf(Integer), True); //On transmet la taille afin de créer la tableau de bonne taille sur le serveur IdTCPClient.SendBufferSize := taille*SizeOf(Char); //On définit la taille du buffer d'envoi debut := GetTickCount; //On va compter le temps qu'il faut pour envoyer tout ca for i := 0 to taille -1 do IdTCPClient.WriteBuffer(data[i], SizeOf(Char), True); //On envoie le tableau fin := GetTickCount;
Partager