2013-10-12 3 views
0

Voici mon code et je vais me connecter au google en utilisant son adresse IPv6, mais la méthode socket.connect() est enfin la dernière exception de timeout, j'ai besoin d'une solution pour cela et où dois-je changer mon code,La méthode Socket.connect() échoue pour l'adresse ipv6

 Uri google = new Uri("http://www.google.com"); 

     IPAddress[] ips = Dns.GetHostEntry(google.DnsSafeHost).AddressList; 
     IPAddress ipAddress = ips[0]; 
     foreach (IPAddress ip in ips) 
     { 
      if (ip.AddressFamily == AddressFamily.InterNetworkV6) 
       ipAddress = ip; 
     } 

     IPEndPoint endPoint = new IPEndPoint(ipAddress, 80); 

     Socket socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
     socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); 
     socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 60 * 1000); 
     socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 60 * 1000); 
     socket.Connect(endPoint); 
+0

Je dois avoir besoin de se connecter à son adresse ipv6, pas avec ipv4 – hsCode

+0

Cela fonctionne-t-il bien pour les adresses IP4? Je voulais juste savoir que si vous changez InterNetworkV6 en InterNetwork, alors cela fonctionne-t-il? –

+0

oui son travail avec ipv4 adresse – hsCode

Répondre

0

Eh bien, êtes-vous sûr que vous vous connectez à une adresse IP valide et est en ligne et est capable de se connecter? un timeout ne signifie pas qu'il y a un problème avec IPv6.

+0

oui, le code se connecte à l'adresse ipv6 valide retour de AddressList – hsCode

Questions connexes