IPアドレスを指定して送信/受信

IPアドレスを指定してメッセージを相互に送信/受信します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. プログラムファイルをダウンロードして、プロジェクトに取り込んで下さい。
    ファイル名 説明
    SendRecive.cs IPアドレスで送信/受信
  2. 通信相手のIPアドレスを指定して、相互にメッセージを送信/受信します。
    今回は Server と Client を分けずに、送信と受信を一本のプログラムで行います。
    ページ先頭の画像を参考にして、コントロールを貼り付けて下さい。
    受信PORT メッセージを受信するポートです
    送信PORT メッセージを送信するポートです
    送信URL 送信先のIPアドレスです
    受信メッセージ 送信するメッセージをタイプする TextBox です
    通信 LOG 通信記録を表示します
    StatUP Button 通信の準備を整えてます
    終了 Button プログラムを終了します
    Send Button 送信URLにメッセージを送ります
    StatUP Button をクリックする前に受信ポートを設定して下さい。
    受信URLは誰でもいいから(0.0.0.0) に設定されています。
    送信ポートと送信URLは、メッセージを送信する直前に設定(変更)することが出来ます。
    IPアドレスやポートの説明は 「超初心者のプログラム入門(C言語 Windows)/Peer to Peer でメッセージの送受信」を参照して下さい。
  3. メッセージの受信にインターバルタイマを使うので [ツールボックス] から [Timer] を貼り付けます。
    詳細は ToolBox から Timer を貼り付けてカウントする を参照して下さい。
  4. MyForm Class の最初に Internet Object Class を定義して下さい。
    Constructor でサーバーを起動して接続待機に入ります。
    ReciveMessage() がインターバルタイマから起動されるメッセージを受信するメソッドです。
    SendMessage() がメッセージを送信するメソッドです。
    public class MyForm : Form
    {
        //☆ Internet Object Class
        public class Internet 
        {
            ・・・
    
            // Constructor
            public Internet(String Port) 
            {
                ・・・
            }
    
            // Message の受信
            public void ReciveMessage()
            {
                ・・・
            }
    
            // Message の送信
            public void SendMessage(String Addr, String Port, String Msg) 
            {
                ・・・
            }
        } 
    
  5. MyForm の Main Program です。
    Inet は Internet Object Class の定義です。
    MsgLog は通信記録の領域です。
    コンストラクタから InitializeComponent() を呼び出します。
        //☆ MyForm Program
        public  Internet Inet = null;      //Internet Object Class
        public  String   MsgLog;
    
        public MyForm()
        {
            InitializeComponent();
        }
        
  6. Button1_Click() で Internet Object Class を生成して通信準備を整えます。
    timer1.Start() でタイマを起動して受信チェックをスタートします。
  7. Button2_Click() でプログラムを終了します。
        private void Button2_Click(object sender, EventArgs e)
        {
            Inet.Listener = null;
            this.Dispose();
        }
        
  8. Button3_Click() でメッセージを送信します。
    SendMessage() が Internet Class で定義した送信メソッドです。
  9. インターバルタイマで、受信メッセージを監視します。
    ReciveMessage() が Internet Class で定義した受信メソッドです。
    メッセージが受信されると ReciveMsg に格納されます。
  10. Win32 PAI を使ったプログラムも掲載しています。
    「超初心者のプログラム入門(Windows)」から Peer to Peer でメッセージの送受信 を参照して下さい。

プログラムのテスト

  1. 最初に一本のプログラムでテストしてみましょう。
    1. プログラムを立ち上げて、次の値に設定して下さい。
      127.0.0.1 は自分自身を指すIPアドレスです。
      受信Port 12345
      送信Port 12345
      送信URL 127.0.0.1
    2. Start UP ボタンをクリックして、待機状態に設定して下さい。
    3. 「送信メッセージ」に "Hello" をタイプして Send ボタンをクリックします。
      Log の TextBox に「送信: Hello」と「受信: Hello」が表示されます。
    4. 送信メッセージに "メッセージを送信します" をタイプして Send ボタンをクリックしてみて下さい。
    5. 終了ボタンをクリックするとプログラムが終了します。
  2. 1台のマシンで二本のプログラムを立ち上げてテストします。
    1. 一本目のプログラムを立ち上げて、次の値に設定して下さい。
      127.0.0.1 は自分自身を指すIPアドレスです。
      受信Port 12345
      送信Port 12340
      送信URL 127.0.0.1
    2. Start UP ボタンをクリックして、待機状態に設定して下さい。
    3. 二本目のプログラムを立ち上げて、次の値に設定して下さい。
      一本目も二本目もこのページで作成した同じプログラムです。
      Port は一本目の送信が二本目の受信になり、一本目の受信が二本目の送信になります。
      受信Port 12340
      送信Port 12345
      送信URL 127.0.0.1
    4. 二本目の Start UP ボタンをクリックして下さい。
    5. 二本目の「送信メッセージ」に Hello をタイプして Send ボタンをクリックします。
      「送信: Hello」が表示されて、12345 のポートにメッセージが送信されます。
    6. 一本目のプログラムに「受信: Hello」が表示されたらOKです。
    7. 同じ要領で一本目のプログラムから返信して下さい。
      こんどは一本目に「送信:メッセージ」が表示され、二本目に「受信:メッセージ」が表示されます。
  3. LAN で接続されている2台のマシンでテストしてみましょう。
    1. 最初にそれぞれのパソコンのIPアドレスを調べて下さい。
      パソコンに割り当てられたIPアドレスは ipconfig で確認できます。
      C:\>ipconfig
    2. 1台目のプログラムを立ち上げて、次の値に設定して下さい。
      169.180.32.52 は私がテストしたときの2台目のIPアドレスです。
      送信メッセージは、1台目のパソコンから2台目のパソコンに送信します。
      受信Port 12345
      送信Port 12340
      送信URL 169.180.32.52
    3. Start UP ボタンをクリックして、待機状態に設定して下さい。
    4. 2台目のプログラムを立ち上げて、次の値に設定して下さい。
      起動するプログラムは、このページで説明している同じプログラムです。
      Port は1台目の送信が2台目の受信になります。
      192.254.198.113 は私がテストしたときの1台目のIPアドレスです。
      送信メッセージは、2台目のパソコンから1台目のパソコンに送信します。
      受信Port 12340
      送信Port 12345
      送信URL 192.254.198.113
    5. 2台目の「送信メッセージ」に Hello をタイプして Send ボタンをクリックします。
      「送信: Hello」が表示されて、192.254.198.113 の 12345 にメッセージが送信されます。
    6. 1台目のマシンにメッセージが送信されて「受信: Hello」が表示されたらOKです。
  4. 3台以上のマシンを接続して、相互に通信することも出来ます。
    そのときは送信側と受信側のIPアドレスとポートを矛盾しないように設定して下さい。

超初心者のプログラム入門(C# Frame Work)