概要

一、Socketプログラミングとは何か

  1. Socketの文字通りの意味
    Socketは元々コンセントを意味する英単語です。コンセントは二点の間に接続を作り出すため、ネットワークプログラミングではネットワーク通信用の端点という意味で使われます。
  2. Socketプログラミングの定義
    TCP / UDPといったネットワークプロトコルを利用し、複数のホスト間でデータの送受信を行う処理です。
  3. 平易な解説
    2台以上のコンピュータ同士がデータをやり取りできるプログラムを書くことです。代表的な例として、LAN上で動作するチャットツールが挙げられます。

イメージ例:コンセント=ネットワークエンドポイント、プラグ=相手ホスト、プラグを差し込む=ネットワーク接続の確立。

理解を深めるため、実際にコードを書きながら学べるサンプルを用意します。

二、簡易チャットツールの設計案

アーキテクチャモデル:クライアント/サーバー(C/S)
  • サーバー(Server)
  1. ローカルの指定ポートにバインドし、ネットワークからの接続要求を待ち受け続ける
  2. 他のコンピュータからの接続を待機する
  3. クライアントからの接続を検知したら通信経路を作成する
  • クライアント(Client)
    サーバーのIPアドレスとポート番号を指定し、自ら接続要求を送信する
  • 通信の目的:2台のコンピュータでテキストメッセージをリアルタイムに送受信し、チャットを実現する

処理フロー

  1. サーバー起動 → ポート待ち受けを開始
  2. クライアント起動 → サーバーのIPとポートへ接続
  3. 接続が確立したら、互いにメッセージを送受信

以下に最小限のサンプルコードを示します

サーバー

// 1. TcpListenerを作成しIPとポートを監視
TcpListener listener = new TcpListener(IPAddress.Any, 8899);
listener.Start();
// 2. クライアントからの接続を待つ
TcpClient client = await listener.AcceptTcpClientAsync();
// 3. ネットワークストリームを取得しメッセージを送受信
NetworkStream stream = client.GetStream();
Code language: JavaScript (javascript)

クライアント

// サーバーのIPとポートに接続
TcpClient client = new TcpClient();
await client.ConnectAsync("192.168.1.100",8899);
NetworkStream stream = client.GetStream();Code language: JavaScript (javascript)

概要

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です