[R] Problème TCP: Les paquets qui se chevauchent.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Problème TCP: Les paquets qui se chevauchent.
Bonsoir à tous.
Alors voila, j'ai un problème assez compliqué qui touche le protocole TCP.
J'ai modifié les fichiers TCPRecv et TCPSend de l'exemple d'autoit ainsi:
TCPSend envoie toutes les 10ms la chaîne "x"
TCPRecv récupère les packets toutes les 1 secondes.
Or au lieu de recevoir une chaîne "x", TCPRecv reçois plusieurs "x"
C'est pour illustrer un gros problème de la communication TCP en Autoit. Par exemple si le PC qui envoie les données, les envoie + rapidement que celui qui les reçois, les données se chevauchent.
Et j'aimerai savoir comment remédier à ce problème.
Merci d'avance.
Alors voila, j'ai un problème assez compliqué qui touche le protocole TCP.
J'ai modifié les fichiers TCPRecv et TCPSend de l'exemple d'autoit ainsi:
TCPSend envoie toutes les 10ms la chaîne "x"
TCPRecv récupère les packets toutes les 1 secondes.
Or au lieu de recevoir une chaîne "x", TCPRecv reçois plusieurs "x"
C'est pour illustrer un gros problème de la communication TCP en Autoit. Par exemple si le PC qui envoie les données, les envoie + rapidement que celui qui les reçois, les données se chevauchent.
Et j'aimerai savoir comment remédier à ce problème.
Merci d'avance.
- Fichiers joints
-
TCPSend.au3- (1.81 Kio) Téléchargé 94 fois
-
TCPRecv.au3- (3.06 Kio) Téléchargé 77 fois
Modifié en dernier par L4crymal le jeu. 08 déc. 2011 14:37, modifié 1 fois.
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Mais ce n'est (heureusement) pas un "gros problème" : TCP fait exactement ce qu'il convient de faire à ce niveau.
Ton problème réside dans le fait que tu confonds les niveaux ou couches d'une communication entre machines.
TCP est avant tout un protocole de Transport et n'est aucunement chargé d'interpréter ce qu'il envoie ou ce qu'il reçoit en termes de messages ou quoi que ce soit d'un niveau supérieur.
Heureusement qu'il y a isolation entre ces couches, bien que le modèle TCP/IP soit plutôt marécageux comparé au modèle OSI. TCP a pour mission d'émettre (via les couches inférieures qui lui sont essentiellement opaques) ce que tu veux envoyer, de se dépatouiller en utilisant les services de Réseau sous-jacents de tout le fatras qui se passe sur le réseau et, côté réception, de te fournir les données reçues telles qu'émises dans le bon ordre, ou une erreur t'indiquant vaguement ce qui a foiré. Point.
Ce qu'en font les couches supérieures, ce n'est plus son problème. Soit tu t'appuies sur un protocole applicatif de ton choix, soit plus bas mais dans ce cas-là il t'appartient de te débrouiller avec ces "détails".
Une simple recherche à l'aide de ton pote te remontera par exemple ceci, qui détaille ce que je viens de dire.
Tu voudrais peut-être employer des MailSlots ; il y a un UDF pour ça juste à côté. Les MailSlots fonctionnent en local comme au travers du réseau.
Ton problème réside dans le fait que tu confonds les niveaux ou couches d'une communication entre machines.
TCP est avant tout un protocole de Transport et n'est aucunement chargé d'interpréter ce qu'il envoie ou ce qu'il reçoit en termes de messages ou quoi que ce soit d'un niveau supérieur.
Heureusement qu'il y a isolation entre ces couches, bien que le modèle TCP/IP soit plutôt marécageux comparé au modèle OSI. TCP a pour mission d'émettre (via les couches inférieures qui lui sont essentiellement opaques) ce que tu veux envoyer, de se dépatouiller en utilisant les services de Réseau sous-jacents de tout le fatras qui se passe sur le réseau et, côté réception, de te fournir les données reçues telles qu'émises dans le bon ordre, ou une erreur t'indiquant vaguement ce qui a foiré. Point.
Ce qu'en font les couches supérieures, ce n'est plus son problème. Soit tu t'appuies sur un protocole applicatif de ton choix, soit plus bas mais dans ce cas-là il t'appartient de te débrouiller avec ces "détails".
Une simple recherche à l'aide de ton pote te remontera par exemple ceci, qui détaille ce que je viens de dire.
Tu voudrais peut-être employer des MailSlots ; il y a un UDF pour ça juste à côté. Les MailSlots fonctionnent en local comme au travers du réseau.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Sinon Tu peux faire une sorte D'en-tête au message, qui indiquerait le nombre d'octet du message, ensuite il ne reste qu'à lire cette en-tête puis le nombre spécifique d'octet et voilà le message.
Compte skype : bloodwolfff
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Merci pour vos réponses
@bloodwolff : Oui c'est ce que j'ai fait, un noyau de communication TCP qui envoie des packets avec des entêtes et de l'autre côté le même noyau qui peut les interpréter, mais le problème c'est que ainsi je ne peux que envoyer des "petits" packets.
Par exemple, l'envoie de fichier c'est mort...
Si vous êtes chauds je poste mes 2 scripts Client/Serveur si vous n'avez pas une solution aussi pour le transfert de fichiers.
@bloodwolff : Oui c'est ce que j'ai fait, un noyau de communication TCP qui envoie des packets avec des entêtes et de l'autre côté le même noyau qui peut les interpréter, mais le problème c'est que ainsi je ne peux que envoyer des "petits" packets.
Par exemple, l'envoie de fichier c'est mort...
Si vous êtes chauds je poste mes 2 scripts Client/Serveur si vous n'avez pas une solution aussi pour le transfert de fichiers.
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Tu es en train de réinventer FTP...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Pas vraiment non. Et si j'ai envie de faire un client de messagerie instantanée avec échange de fichiers?
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Bah si !
Tu as d'un côté ton FTP et d'un autre ton chat avec canal de contrôle pilotant le FTP.
Ou l'équivalent à ta sauce, mais conceptuellement c'est ça.
Tu as d'un côté ton FTP et d'un autre ton chat avec canal de contrôle pilotant le FTP.
Ou l'équivalent à ta sauce, mais conceptuellement c'est ça.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Je vais donc essayer de coupler ça alors (on va bien se marrer au niveau algorithme youhou
)
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Problème TCP: Les paquets qui se chevauchent.
Que tu utilises des protocoles éprouvés ou que tu mixes le tout à ta sauce en n'employant que TCP est ton choix. IRC est exactement taillé pour ce que tu sembles vouloir faire mais libre à toi d'implémenter essentiellement la même chose à la mimine.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- matwachich
- Membre émérite

- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [R] Problème TCP: Les paquets qui se chevauchent.
Cherche SimpleTCP sur le forum, c'est mon UDF, il résout parfaitement ce problème (Pour les petits fichiers) 
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici

