Modifier la valeur ttl d'un controle winsock

Contenu du snippet

ceci est simplement un exemple pour comprendre comment changer le TTL (Time To Live) d'un controle WINSOCK sous VB.

Source / Exemple :


'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)

Conclusion :


j'espere que cela pourra aider quelqu'un.
PS: vous pouvez laisser une note ou un commentaire

A voir également

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.