MENU

C#で学ぶソケット通信:クライアント編

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

前回の記事では、C言語を用いてソケット通信のサーバー側プログラムを作成する方法について学びました。

今回はその続編として、C#を用いてソケット通信のクライアント側プログラムを作成する方法を解説します。

Windows環境での開発に慣れている方や、C#でのネットワークプログラミングに興味がある方にとって、具体的なコードを通じて理解を深められると思いますので、ぜひ実際にコードを実行して試してみてくだい。

目次

ソケット通信のサーバー側プログラム

前回の記事でソケット通信のサーバー側プログラムの作成方法を解説しました。

こちらの記事で紹介したserver.cというLinuxで動作するプログラムを通信相手として使用します。

作成したC#ソースコード

クライアント側のハードウェアは市販のPCを使用します。
プログラムはC#で記述し、Visual Studioでビルド、実行します。

コード解説

  1. TcpClientクラスのインスタンスを作成します。これによりクライアント側のソケットが生成され、指定したIPアドレスとポート番号でサーバに接続します。このプログラムでは、IPアドレスには “127.0.0.1”(ローカルホスト)を、ポート番号は8080を指定しています。
  2. 次に、GetStream()メソッドを用いて、サーバとの通信に使用する NetworkStream を取得します。このストリームは、サーバとの間でデータを送受信するための道具です。
  3. Console.ReadLine()メソッドを用いて、ユーザからの入力を受け取ります。これが送信するメッセージとなります。
  4. 入力されたメッセージをASCII文字列に変換し、NetworkStream.Write()メソッドを用いてサーバに送信します。
  5. メッセージが “quit” の場合、送信ループから抜け出します。これにより、クライアントはサーバへのメッセージ送信を停止します。
  6. 最後に、NetworkStream.Close()メソッドとTcpClient.Close()メソッドを用いて、通信用ストリームとソケットを閉じます。これにより、ソケット通信に使用していたリソースが解放されます。

全体のソースコード

以下が全体のソースコードです。

using System;
using System.IO;
using System.Net.Sockets;
using System.Text;

namespace SocketClient {
    class Program {
        const int Port = 8080;
        const string ServerAddress = "127.0.0.1";

        static void Main(string[] args) {
            // サーバーに接続
            TcpClient client = new TcpClient(ServerAddress, Port);
            NetworkStream stream = client.GetStream();

            Console.WriteLine("Connected.");

            // サーバーにメッセージを送信
            while (true) {
                Console.Write("Enter message: ");
                string message = Console.ReadLine();

                byte[] data = Encoding.ASCII.GetBytes(message);
                stream.Write(data, 0, data.Length);

                // メッセージが "quit" の場合、終了
                if (message == "quit") {
                    break;
                }
            }

            // ストリームとクライアントソケットを閉じる
            stream.Close();
            client.Close();
        }
    }
}

コーディングが終わったらVisual Studioでコンパイルしてください。

実行結果

サーバー側とクライアント側それぞれのプログラムを実行し、通信ができるかどうかをテストします。

まずサーバー側でserver.cを実行します。
すると以下のようにWaiting for connection..と表示され、クライアント側からの接続待ち状態となります。

続いてクライアント側のプログラムを実行します。
実行するとConnected.と表示され、サーバー側のプログラムと接続が完了します。

Enter message:と表示されますので、送信したいメッセージを入力します。今回はsendtestと入力しました。
入力したらEnterキーを押下し、送信します。

するとサーバー側のプログラムでRecived message: sendtestと表示され、クライアント側で入力したメッセージが表示されましたので、正しく通信できていることが確認できました。

組込みソフトウェアの知識を仕事に活かすには

趣味でマイコンのプログラムを書いてるから、仕事でも活かしたいなあ。
でも自信が無い…

そんな時は、一度スクールで体系的に基礎を学ぶといいよ。

趣味のプログラミングスキルを活かしたいけど、「実務レベルで通用するか不安」という方には、プログラミングスクールを受講してみるのがおすすめです。

プログラミングスクールのカリキュラムは、企業の研修などでも利用されており、実践的で即戦力となるスキルを習得することが可能です。

Winスクールでは、Web系や機械学習、データサイエンスなどに加え、プログラミングスクールでは珍しいハードウェアを扱うC言語組み込みシステムやハードウェアとクラウドを連携させたIoTシステムの講座が非常に充実しています。

授業内容も受講者に対して組み込み用マイコンボードRaspberry Piを用意し、実機を使いながら学べる本格的なカリキュラムが用意されています。

また、受講者のスケジュールやロケーションに応じて、対面授業オンライン授業を選択、もしくは組み合わせて受講できるため、プログラミング初心者の方でも安心です。

家電自動車業界などへの転職を目指したい方に非常におすすめです。

また近年、クラウドソーシングのプラットフォームにも、マイコンボードを使った組み込みソフトウェアの開発案件も多く募集されており、副業でマイコンのソフトウェア開発を行う方も増えています。

クラウドワークスなどで「Raspberry Pi」と検索すると、開発解説記事作成などの案件が出てくるよ。

スクールで基礎をしっかり押さえておけば、安心して案件に応募できるね。

 プログラミング言語Python, C, C#, Java, JavaScript(React.js), Ruby, PHP, 他
 授業形式対面&オンラインが選択可能
 学習期間90分×40回(60時間)(C言語&組込みシステム開発(マイコンボード)コースの例)
 費用353,100円~(C言語&組込みシステム開発(マイコンボード)コース例)
 補助金、給付金一部の講座が教育訓練給付制度対象
 転職支援個別の就職カウンセリング、無料の就職支援セミナー
 実績・信頼性年間17,000人以上の受講者、年間1,484社の企業研修実績

\ Winスクール公式サイトを見てみる! /

まとめ

以上で、C#を用いたソケット通信のクライアント側プログラムについての説明を終わります。

今回は、ソケットの作成からデータの送信、そしてソケットのクローズまで、基本的なソケット通信のフローを一通り学びました。サーバー側とクライアント側、両方のソケット通信プログラムを理解することで、より実践的なネットワークアプリケーションの開発に取り組むことが可能になります。

これからも、各自のスキルアップに活用してください。次回は更なる応用編として、非同期通信やエラーハンドリングについて扱いますので、ぜひご期待ください。

よかったらシェアしてね!
  • URLをコピーしました!
目次