2013-10-12 30 views
0

这里是我的代码,我要使用它的ipv6地址连接到谷歌,但socket.connect()方法最后是抛出超时异常,我需要一些解决方案这一点,我应该在哪里更改我的代码,Socket.connect()方法失败的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

我必须要连接到它的ipv6地址,而不是ipv4 – hsCode

+0

它对IP4地址工作正常吗?只是想知道,如果您将InterNetworkV6更改为InterNetwork,那么工作是否正常。 –

+0

是它使用ipv4地址 – hsCode

回答

0

嗯,你确定你要连接到的IP地址是有效的,是在线和能够连接? 超时并不意味着IPv6有问题。

+0

是的,代码连接到从AddressList返回的有效ipv6地址 – hsCode