Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 373 fois - Téléchargée 38 fois
'creer un form avec un controle WINSOCK Private Declare Function setsockopt Lib "wsock32" (ByVal WinSockHandle As Integer, ByVal level As Integer, ByVal X As Integer, ByRef AdresseAndInterface As Any, ByVal LenOfAdresseAndInterface As Integer) As Integer dans le form_load() If Winsock1.State <> 0 Then Winsock1.Close ' si winsock pas ferme alors ferme le With Winsock1 '.RemoteHost = "192.168.2.255" ' envoi un broadcast .RemoteHost = "224.0.0.1" ' envoi un multicast .RemotePort = PortDistant '41000 ' port distant de connexion. .Bind PortLocal 'port d'ecoute de connexion End With 'mettre le TTL du Winsock a 2 pour passer les routeurs si il a besoin Dim TTL As Integer TTL = 2 'le 10 correspond a IP_MULTICAST_TTL pour changer la valeur du TTL si on fait du multicast 'au lieu de 10 mettre 4 si c'est de l'IP classique non multicast 'cf: MSDN recherche par les mots "WINSOCK TTL" setsockopt Winsock1.SocketHandle, 0, 10, TTL, Len(TTL) ce qui est donc important pour changer le TTL d'un WINSOCK c'est TTL = 2 setsockopt Winsock1.SocketHandle, 0, 10, TTL, Len(TTL) dans cet exemple, on met le TTL a 2 pour des trames UDP multicast. pour des trames IP classisques (non multicast) : TTL = 2 setsockopt Winsock1.SocketHandle, 0, 4, TTL, Len(TTL)
27 déc. 2004 à 02:36
Merci de ces explications :-)
27 déc. 2004 à 00:10
donc ce multicast ne peut passer aucun routeur car au premier routeur rencontré sa valeur TTL passe a zero (donc ce n'est pas une valeur de temps reel comme celle d'un ping), une fois que ta trame a une valeur de TTL zero elle est considéré comme morte donc pas routé.
le fait de passer un routeur eleve 1 a la valeur TTL de toute trame, ainsi une trame ayant une valeur TTL de 128 pourra en théorie passer 128 routeurs avant d'etre considéré comme morte.
en regle general on fait communiquer deux sites par un routeur a chaque extremité du tuyau donc 2 routeurs, ainsi une valeur de TTL a 3 doit suffir pour faire communiquer deux sites.
si on passe une multitude de routeurs entre deux sites, l'ideal est de faire un tunnel (genre un VPN) ainsi on se retrouve dans le cas precedent ou ue valeur de TTL 3 suffit pour faire communiquer les deux sites.
NB : ATTENTION!! dans le cas de trames broadcast ou multicast les routeurs doivent etre configurés pour laisser passer ce type de trames (pas par defaut) soit tous les routeurs, soit ceux a chaque extremités en cas de tunnel.
la valeur max de TTL est 256.
ah si aussi en cas de multicast (je me suis fais avoir) ne pas utiliser l'adresse 224.0.0.1 elle est reservé mieux vaut 240.XX.XX.XX par exemple.
donc comme tu le vois le TTL du winsock n'est pas une durée de vie en temps reel mais plutot le nombre d'iteration possible de la trame avant sa mort.
26 déc. 2004 à 18:24
La suite logique de tes recherches sur le protocole UDP ?
Si j'ai bien compris les précédents épisodes, un 'jeton' UDP est lancé sur le réseau.
En fonction de l'IP que l'on passe au jeton, celui peut remonter aux couches supérieures des routeurs (multicast ou broadcast).
Ce jeton 'réagit' aux interrogations liées au port de comm (et pas à l'IP), ce qui permet aux clients de contacter le serveur sans connaître son IP (voir ce lien qui est une mise en application de ta précédente source http://www.vbfrance.com/code.aspx?id=22252 )
L'idée de la durée de vie du jeton m'avait échappée.
Juste une question : TTL = Time To Live
Est-ce que cela a un rapport avec le temps de vie du jeton ?
Si oui, que signifient les valeurs passées au TTL ? (secondes, millisecondes) ?
Si non, comment ce terme peut-il agir sur la profondeur de propagation de l'info ?
Quelle est la valeur par défaut du TTL et si c'est lié au temps, combien de temps cette info reste valable.
Merci d'approfondir les explications.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.