Accueil > Forum > > > > Pertes paquets UDP en VB
Pertes paquets UDP en VB
lundi 18 juin 2007 à 15:55:51 |
Pertes paquets UDP en VB

Moun
|
Bonjour, J'utilise le composant Microsoft winsock Control 6 pour une appli client / Serveur. C'est un système d'agents qui envoient des messages à un serveur. L'envoi des messages des agents vers le serveur se fait en UDP. Je sais que le protocole UDP ne donne pas de garantie de livraison, par contre, j'ai, par moment, paquets qui sont apparemment bien reçu sur le serveur quand je regarde le trafic réseau grâce à un tcpdump sur l'interface mais le prog VB semble ne pas les recevoir (pourtant je trace dans un fichier tout ce qui est reçu par ce prog sur la socket avant tout traitement). Avez-vous une idée du pb ? Est-il "normal" que certains paquets puissent arriver au niveau d'une interface et non récupéré par VB ? Merci d'avance pour votre aide Voici l'extrait de code VB qui effectue le traitement sur réception : Private Sub Recv_data_DataArrival(ByVal bytesTotal As Long) Dim strdata, suite, msgpret As String Dim splt As Variant Dim i As Integer Dim NomFic As String On Error GoTo ErrRecept NomFic = App.Path & "/mestraces.log" & Format(Now(), "yyyymmdd") If NomFic <> NomFicLog Then NomFicLog = NomFic Close (10) Open NomFicLog For Append As #10 End If Recv_data.GetData strdata, vbString Print #10, strdata suite = "" Recv_data.GetData suite, vbString strdata = strdata + suite While suite <> "" Print #10, suite suite = "" Recv_data.GetData suite, vbString strdata = strdata + suite Wend ..... (après je traite le buffer strdata) Exit Sub ErrRecept: ajout_trace "Erreur Trt Message" Exit Sub End Sub
|
|
lundi 18 juin 2007 à 16:09:15 |
Re : Pertes paquets UDP en VB

Renfield
|
sais pas si ca viens de ça, mais ici : Dim strdata, suite, msgpret As String
strdata et suite sont des Variant, non des String
étrange, ton entrecroisement de Close, Open et Print....
remplace tes #10 par la valeur renvoyée par FreeFile avant l'ouverture d'un fichier :
a = FreeFile Open ... For Append As #a Print #a,... Close #a
spécifie la taille que tu soouhaites, dans l'appel a la methode GetData, tu aura normallement plus besoin de boucler pour tout lire
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
lundi 18 juin 2007 à 18:51:34 |
Re : Pertes paquets UDP en VB

jack
|
Salut Comme le dit justement RenField, dans la mesure où tu ne spécifies pas de taille/longueur de données que tu lis avec le GetData, TOUTES les données sont lues (comme expliqué dans l'aide), pas la peine de faire deux fois (ou plus) le GetData. Si d'autres données arrivent ensuite, elles redéclencheront l'évènement DataArrival.
Vala Jack, MVP VB NB : Je ne répondrai pas aux messages privés
|
|
mardi 19 juin 2007 à 10:56:34 |
Re : Pertes paquets UDP en VB

Moun
|
Salut,
Tout d'abord : merci pour vos réponses rapides. C'est la première fois que je poste une question sur le site et je ne pensais pas que c'était aussi réactif que ça !
Concernant l'entrecroisement de open, close, print : ca me permet de faire une rotation de fichier de log (un fichier généré par jour) car c'est une appli qui tourne en 24/24, 7/7 et qui reçoit un flux relativement important d'informations (donc mon fichier grossit assez vite) => Si le jour actuel change, je clos le fichier de log actuellement ouvert et j'en ouvre un nouveau avec la date du jour
La boucle en réception me permet de pallier à une éventuelle limite de taille des données retournées (je crois savoir que le getdata ne renvoie pas plus de 8192 bytes) donc, si le buffer n'est pas complètement vidé (dans le cas de messages supérieurs à 8192 bytes ou si d'autres données sont arrivées entre le déclenchement de l'évènement et la fin du premier getdata), je prend de suite le reste du buffer (j'essaie de me préserver d'un éventuel overload du buffer système de réception UDP en vidant au plus vite ce buffer).
Reste que malgré toutes mes précautions pour prendre absolumment toutes les données du buffer, il y a 2 ou 3 paquets par jour qui ne sont pas récupérés par l'évènement DataArrival et le getdata et je ne vois pas ce que je peux faire pour l'éviter. Si vous avez d'autres idées pour résoudre mon problème...
Merci d'avance
|
|
mardi 19 juin 2007 à 21:42:26 |
Re : Pertes paquets UDP en VB

Renfield
|
Réponse acceptée !
dangereux de ne fermer qu'une fois .... tu risque de pas avoir d'infos, si ton appli crash (a verifier)
c'est vraiment couteux de l'ouvri/fermer a chaque log ?
si d'autres données arrivent, tu aura un autre event GetData
utilises le composant Winsock présent ici : www.vbip.com
il est de très bonne facture, et utilise les API Winsock 2, qui sont plus fiables que le composant Winsock classique. tu aura peu de chose a changer dans ton code pour le mettre en place
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
mercredi 20 juin 2007 à 16:16:02 |
Re : Pertes paquets UDP en VB

Moun
|
Salut, Merci pour l'info concernant la classe Winsock sur www.vbip.com : je l'avais déjà utilisée une fois dans un autre prog. A ce moment là, elle m'arrangeait mieux que le composant Winsock de chez Microsoft car c'était pour une appli sans interface graphique => Si en plus elle est plus fiable, je vais maintenant prendre l'habitude de n'utiliser que celle-ci... J'ai modifié le prog en conséquence => je le met 24 heures en test et j'indiquerai sur le site si cette solution est efficace dans ce cas. Concernant les ouvertures/fermetures de fichier, pour ma part, je n'ai jamais remarqué de problèmes particuliers lorsqu'une de mes applis se crashait sans refermer un fichier de sortie => le buffer était bien flushé. Dans mon cas, l'appli doit pouvoir supporter une charge maximale en réception de message (ce bout de code sert pour faire de la supervision et généralement quand quelque chose se passe mal, ça se met à envoyer des messages d'alertes de partout !), aussi je ne me permet aucun ordre qui ne soit pas strictement nécessaire pour le fonctionnement et la stabilité de l'appli, d'où la non ouverture/fermeture du fichier à chaque arrivée de message => ça a comme désavantage que je ne suis pas en mesure de voir les derniers messages dans mon log si l'appli tourne mais ce log ne sert justement que si l'appli a rencontré un problème.
|
|
vendredi 22 juin 2007 à 09:05:36 |
Re : Pertes paquets UDP en VB

Moun
|
Salut,
Je viens de faire l'analyse des messages reçus sur ma socket sur une période qui avoisinne les 36 heures : aucune perte de données sur la socket (en général, sur une période comme celle-ci, je perdais environ 3 paquets). La classeWinsock de vbip semble vraiment être plus fiable que le composant de chez Microsoft !
Dorénavant, je prendrais l'habitude de n'utiliser que cette classe...
Merci à tous
|
|
mardi 26 juin 2007 à 08:15:46 |
Re : Pertes paquets UDP en VB

Renfield
|
noté...
n'incrimine pas Microsoft, ce sont eux qui sont a l'origine des APIS Winsock et Winsock2....
le composant dispo pour VB n'est juste pas a jour. A ce niveau, oui, on peut les blamer pour négligeance a notre encontre ^^
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
Cette discussion est classée dans : vb, suite, paquets, strdata, udp
Répondre à ce message
Sujets en rapport avec ce message
vb excel help [ par banditito ]
salut, je débute avec vbpb: dans une feuille d'excel, je crée des formes automatiques que je nomme par la suite : Par, Découpe etc...j'aimerais dans u
Winsock et VB en MonoPoste [ par sena ]
Bonjour,En fait j'ai 2 exe.Un client UDP en C et un receveur en Vb qui utilise Winsock.Je fait tourner ces 2 prg en monoposte, c'est a dire que j'envo
Suite utilisation API sur une application [ par dadou19 ]
Bon tout d'abord merci à tout ceux qui pourront aider Dadou le plus débuants des débutants... sous VB ! ;o), je cherche à griser la croix 'd'une appli
Socket en vb.net dotnet [ par Spe6men ]
Voila je voudrai envoyer une constante = a ÿÿÿÿgetstatusa un serveur Et je veu ensuie traiter sa reponse commen faire svpG essayer ca mai ca marche pa
vb et reseau [ par panorama12 ]
bonjour. j'utilise vb pour me connecter à un automate en ftp et je ne comprends pas pourquoi les commandes que j'nvoie ne sont pas reconnues.IL y a ju
capturer des paquets ARP avec VB [ par estebitancf ]
Bonjour,je suis en train de faire un petit logiciel qui doit lire tous les paquets ARP qui arrivent sur mon ordi et je dois chercher a chaque paquet s
Win 3.11 suite... [ par Pierre ]
Rebonjour,Suite à une réponse obtenue sur le forum concernant la programmation en VB pour win 3.11, VB6 ne fabriquant que du 32bit, quelle version de
[vb.net] packet sniffer [ par ezio2000 ]
Avec XP je trouve excellent le sniffer http://www.vbfrance.com/codes/PACKET-SNIFFER-SOCKET-RAW_46893.aspx mais avec Vista la sniffer loi seulement
Problème suite à un plantage système [ par Divinity78180 ]
Bonjour, Etant en train de travailler sur un projet VB sur mon portable, celui-ci a planté sans trop savoir pourquoi, j'ai donc du faire un hard rebo
Livres en rapport
|
Derniers Blogs
PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|