TcpClient で IPv6 を利用したいときのために
ごくごく簡単なサンプルを作ってみました

IPv6とIPv4は基本的なコードはすべて同じです
今回は接続先のコードをハードコーディングしていますが
普通はテキストボックスから入力しもらったり DNS で名前解決するなどして
IPアドレスを取得してもらうようになるかと思います

ちょっと気をつけたいのは TcpClient のコンストラクタにAddressFamily を指定しなければならないことです
引数に AddressFamily 定数を使うのではなく今回のように IPAddress インスタンスから
実際の接続先アドレスの AddressFamily を取得するようにします

IPv6 IPv4

IPAddress TargetAddress = IPAddress.Parse("2001:200:0:8002:203:47ff:fea5:3085");

using(TcpClient Client = new TcpClient(TargetAddress.AddressFamily))
{
  Client.Connect(TargetAddress, 80);

  NetworkStream st = Client.GetStream();
  StreamWriter sw = new StreamWriter(st, Encoding.ASCII);
  StreamReader sr = new StreamReader(st, Encoding.ASCII);

  if (st.CanRead && st.CanWrite )
  {
    sw.WriteLine("GET / HTTP/1.0");
    sw.WriteLine();
    sw.Flush();

    Console.WriteLine(sr.ReadToEnd());
  }

  Client.Close();
}

IPAddress TargetAddress = IPAddress.Parse("203.178.141.194");

using(TcpClient Client = new TcpClient(TargetAddress.AddressFamily))
{
  Client.Connect(TargetAddress, 80);

  NetworkStream st = Client.GetStream();
  StreamWriter sw = new StreamWriter(st, Encoding.ASCII);
  StreamReader sr = new StreamReader(st, Encoding.ASCII);

  if (st.CanRead && st.CanWrite )
  {
    sw.WriteLine("GET / HTTP/1.0");
    sw.WriteLine();
    sw.Flush();

    Console.WriteLine(sr.ReadToEnd());
  }

  Client.Close();
}

参考:
IPv6 ってどうですか?
http://cham-reo.com/blog/archive/2004/01/05/686.aspx

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Comments are closed