「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.17
XML
カテゴリ: C#.NET


C# でポートを監視してパケットをキャプチャするためには、通常は `System.Net.Sockets` ネームスペース内のクラスを使用します。以下は、特定のポートを監視して受信したパケットをキャプチャするサンプルコードです。この例では、TCP プロトコルを使用してポート 8080 を監視します。


```csharp

using System;

using System.Net;

using System.Net.Sockets;


namespace PacketCapture

{

    class Program

    {

        static void Main(string[] args)

        {

            // 監視するポート番号

            int port = 8080;


            // IPアドレスとポートをバインドするエンドポイントを作成

            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, port);


            // TCP ソケットを作成してバインド

            Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            listener.Bind(localEndPoint);


            try

            {

                // ソケットを受信モードに設定して接続待機

                listener.Listen(10);


                Console.WriteLine("Waiting for a connection on port " + port);


                // 接続が来るまで待機

                Socket handler = listener.Accept();


                // 接続が確立されたらデータを受信

                byte[] buffer = new byte[1024];

                int bytesRead = handler.Receive(buffer);


                Console.WriteLine("Received packet: " + System.Text.Encoding.ASCII.GetString(buffer, 0, bytesRead));


                // コネクションを閉じる

                handler.Shutdown(SocketShutdown.Both);

                handler.Close();

            }

            catch (Exception ex)

            {

                Console.WriteLine("Error: " + ex.Message);

            }

        }

    }

}

```


このサンプルコードでは、ポート 8080 を監視して、クライアントが接続してきたら受信したデータをコンソールに表示します。実際のアプリケーションでは、接続ごとに新しいスレッドを作成して非同期的にデータを処理するなど、さらなる機能の追加が必要になるかもしれません。


また、このサンプルは単純な監視のみを行っていますが、セキュリティやパフォーマンスなどの要件に応じてさまざまな改善が必要になる場合があります。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.17 10:14:37


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: