Page 1 sur 1
[R] Problème TCP: Les paquets qui se chevauchent.
Posté : mer. 07 déc. 2011 21:37
par L4crymal
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.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 04:37
par jchd
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.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 07:56
par bloodwolff
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.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 13:28
par L4crymal
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.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 14:08
par jchd
Tu es en train de réinventer FTP...
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 14:14
par L4crymal
Pas vraiment non. Et si j'ai envie de faire un client de messagerie instantanée avec échange de fichiers?
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 14:18
par jchd
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.
Re: [..] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 14:31
par L4crymal
Je vais donc essayer de coupler ça alors (on va bien se marrer au niveau algorithme youhou

)
Re: [R] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 14:41
par jchd
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.
Re: [R] Problème TCP: Les paquets qui se chevauchent.
Posté : jeu. 08 déc. 2011 21:22
par matwachich
Cherche SimpleTCP sur le forum, c'est mon UDF, il résout parfaitement ce problème
(Pour les petits fichiers) 