C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でのネットワーキング入門:System.Netを使ったネットワークプログラミングの基礎

C#ネットワーキングの概要

.NET Frameworkには、階層化され拡張可能なマネージド型のネットワークサービス実装が標準で用意されています。これらの機能を活用することで、開発者は複雑な通信処理を意識することなく、アプリケーションへネットワーク機能を簡単に組み込むことができます。主に使用するのは System.Net 名前空間です。

UriクラスによるURIの操作

C#では、Uri クラスがURI(Uniform Resource Identifier:統一資源識別子)のオブジェクト表現を提供します。URL文字列をそのまま扱うよりも、型安全にリソースへアクセスできるのが特徴です。

Uri uri = new Uri("https://www.example.com/");
WebRequest w = WebRequest.Create(uri);

WebRequest.Create() メソッドにUriオブジェクトを渡すことで、指定したリソースへのリクエストオブジェクトを生成できます。

SSLによる安全な接続の確立

System.Net 名前空間のクラス群は、SSL(Secure Socket Layer)を使った接続の暗号化にも対応しています。動作はURIのスキームによって自動的に切り替えられます。

  • URIが「https:」で始まる場合 → SSLによる暗号化された接続を使用
  • URIが「http:」で始まる場合 → 暗号化されていない通常の接続を使用

また、FTPでSSLを使用したい場合は、GetResponse() メソッドを呼び出す前に EnableSsl プロパティを true に設定します。

String uri = "https://www.example.com/";
WebRequest w = WebRequest.Create(uri);

String uriServer = "ftp://ftp.example.com/new.txt";
FtpWebRequest r = (FtpWebRequest)WebRequest.Create(uriServer);
r.EnableSsl = true;
r.Method = WebRequestMethods.Ftp.DeleteFile;

上記の例では、HTTPSによるWebアクセスと、SSLを有効化したうえでFTPサーバー上のファイル削除(DeleteFile)を行うリクエストを作成しています。

DNS情報の取得:ホスト名とIPアドレスの取得例

次のサンプルコードは、System.Net 名前空間の Dns.GetHostName メソッドと Dns.GetHostEntry メソッド、さらに IPHostEntryAddressList プロパティを使って、ローカルマシンのホスト名とIPアドレス一覧を取得する例です。

サンプルコード

using System;
using System.Net;

class Program {
    static void Main() {

        String hostName = string.Empty;
        hostName = Dns.GetHostName();
        Console.WriteLine("Hostname: " + hostName);
        IPHostEntry myIP = Dns.GetHostEntry(hostName);

        IPAddress[] address = myIP.AddressList;

        for (int i = 0; i < address.Length; i++) {
            Console.WriteLine("IP Address {0}: {1}", i + 1, address[i]);
        }
        Console.ReadLine();
    }
}

実行結果の出力例

Hostname: DESKTOP-ABC123
IP Address 1: 192.168.1.10
IP Address 2: fe80::a1b2:c3d4:e5f6:1234%12

このように、数行のコードだけで自マシンのネットワーク構成情報を取得できます。ループバックアドレスやIPv6アドレスなど、複数のアドレスが AddressList 配列に格納される点に注意してください。

まとめ

C#のネットワーキングは、System.Net 名前空間を中心に、Uri・WebRequest・Dnsといった直感的なクラス群で構成されています。SSL対応もプロパティ1つで制御でき、セキュアな通信も容易に実装可能です。なお、最新の .NET(.NET 5以降)では WebRequest は旧式とされており、新規開発では HttpClient の利用が推奨されている点も覚えておくとよいでしょう。

  1. コンピュータネットワークの学び方:初心者から上級者までの完全ステップバイステップガイド

    コンピュータが私たちの世界を完全に変えたことは、誰もが認めるところです。現代のライフスタイルは、その多くがコンピュータのおかげで成り立っています。そして、コンピュータネットワークは私たちのコミュニケーションのあり方にも計り知れない影響を与えてきました。中でも最大規模のネットワークであるインターネットは、グローバル化を支える重要な基盤となっています。 数十年前の長距離電話がどのようなものだったか、想像してみてください。非常に手間がかかり、費用も高額な手続きが必要でした。しかし今日では、わずか数回のクリックで地球の反対側にいる人とビデオ会議を開くことができます。これが可能になっているのは、まさに

  2. Windows 10のWindowsサンドボックスでネットワークを無効にする方法【レジストリ・グループポリシー対応】

    Windows 10には、信頼できないアプリケーションを安全にテストできる「Windowsサンドボックス」という機能が搭載されています。サンドボックスはHyper-V技術をベースとしており、ホストシステムから完全に分離された環境でアプリの動作確認や検証を行えます。作業が終わってサンドボックスを閉じれば、その中で作成したファイルや状態はすべて完全に削除されるため、本体のシステムに一切影響を与えません。 この記事では、Windowsサンドボックス内でのネットワークアクセスを無効化(または有効化)する方法を、「レジストリエディター」と「ローカルグループポリシーエディター」の2つの手順で詳しく解説しま