C#中的IPv6隧道多线程

时间:2012-12-18 21:17:47

标签: c# multithreading proxy ipv6

我的ISP不支持IPv6,因此我只有IPv4地址。 假设我们在http://tunnelbroker.net/上有一个帐户,在http://www.sixxs.net/上有一个帐户。这些资源中的每一个都为IPv4到IPv6提供隧道,据我所知,在输出上分别可以访问IPv6网络和IPv6地址。

问题如下 - 我需要一个带有两个线程的应用程序,每个线程都会使用自己的隧道选项,例如服务器IPv4地址,可用DNS解析器等。显然,线程必须并行工作+记住可能会有两个以上。有可能以某种方式组织这个而不用netsh修改全局窗口设置吗?也许有一种方法只为线程设置隧道选项,就像在HttpWebRequest中完成的那样:

HttpWebRequest.Proxy = new WebProxy(); //

好的,所以如果我们转到更低级别的API,我需要做些什么才能在这样的隧道中放置默认的HttpWebRequests / Responses(如果我理解正确,ofc)?

* EDITED

这些是tunnelbroker.com建议申请默认隧道工作的设置:

netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel my_ip_here server_ip_here
netsh interface ipv6 add address IP6Tunnel 2001:470:18:201::2
netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:18:201::1

实际上,我正在寻找任何提示,因为我是低级网络编程的新手。

1 个答案:

答案 0 :(得分:1)

6to4隧道为您的机器提供实际的IPv6地址。您可以使用多个6to4,并且您将获得多个IPv6地址。要指定要使用的是哪一个,需要将套接字绑定到所需的IP。

大多数更高级别的API不支持设置它们绑定的IP - 你在这里运气不好,完全受API开发的支配。大多数API甚至不尝试自己绑定到特定地址,而是让操作系统处理选择。这有点奇怪的要求,所以很难责怪他们:)