【コラム】

日本語で10行プログラミング

52 10行でチャットソフトを作る(1)

    クジラ飛行机  [2006/03/07]

    今回は、なでしこのネットワーク機能を利用して、ネットワーク越しに話ができるチャットソフトを作成します。ここでは、インターネットで使われているTCP/IPを使用してプログラムを作ります。チャットソフト作成を通して、TCP/IPの仕組みが理解できたらいいなぁと思います。

    サーバーとクライアント

    TCP/IPでは、コンピュータ同士をつなげるときに、接続する側と接続される側の2つに役割を分担しておきます。接続を待ち受けるのが「サーバー」で、サーバーに接続しようとするのが「クライアント」です。

    Webも、TCP/IPの仕組みの上に成り立っていますので、サーバーとクライアントに役割分担されています。つまり、インターネットエクスプローラなどのWebブラウザがクライアントで、Webページを見るためにサーバーに接続している訳です。

    そこで、チャットソフトを作る場合にも、チャット用のクライアントとサーバーの2つを用意する必要があります。

    サーバーの役割

    サーバーソフトは、起動させたら、クライアントが接続してくるのを待ち続けます。サーバーを起動するときには、どのポート番号で起動するのかを指定する必要があります。

    ポート番号に指定できる番号の範囲は、0から65535までです。ですが、ポート番号の初めの方は、メール(POP3:110番/SMTP:25番)やWeb(HTTP:80番)など、使われている番号が多いので、私たちが勝手に使うとトラブルの元になります。そこで、10000以降の大きな番号を使うと良いでしょう(検索エンジンで「TCP/IP ポート」のキーワードで検索すると、どのポートが何に使われているか調べることができます)。

    なでしこでサーバーを起動させるには以下の4行を書きます(ただし、起動させるだけで、何もしません)。

    !「nakonet.nako」を取り込む。
    サーバーとはTCPサーバー。
    サーバーのポートは10001。
    サーバーを開始。

    1行目で、TCP/IPの機能を使うために必要な定義ファイルを取り込み、2行目で、サーバーという名前のTCPサーバー部品を作成しています。3行目でポート番号を指定し、4行目で実際にサーバーを起動します。

    ※注意:このプログラムを起動すると、Windows XPのファイアウォール機能などが働いて、警告ダイアログがでるかもしれません。動作させるには、なでしこの実行ファイルの名前である「vnako.exe」であることを確認して、通信を許可してください。

    クライアントの役割

    クライアントソフトは、サーバーに接続しようとします。ネットワーク上には無数のコンピュータがつながっているので、その中から、接続したいコンピュータを指定するために、IPアドレスを利用します。IPアドレスというのは、「192.168.1.12」など0から255までの数値が4つ並んだものです。通常、ネットワークに接続すると、コンピュータには、IPアドレスが割り振られます。

    Windows 2000/XPで、自分に割り振られているIPアドレスを調べるには、コマンドラインから「ipconfig」と実行します。これをなでしこで手軽に実行するには、以下のように1行書きます。

    「cmd.exe /k ipconfig」を起動。

    ipconfigを使ってIPアドレスを調べます。私のマシンには、「192.168.1.23」が割り振られていました

    クライアントがサーバーに接続するために必要な情報は、このIPアドレスと、サーバーでも指定したポート番号の、あわせて2つです。

    以下は、なでしこで、ただサーバーと接続しようとするだけのクライアントソフトです。

    ※実行しても何も起こりません。

    !「nakonet.nako」を取り込む。#1
    クライアントとはTCPクライアント。#2
    クライアントのポートは10001。#3
    クライアントのホストは「127.0.0.1」#4
    クライアントで接続。#5

    1行目で、サーバーの時と同様にライブラリを取り込みます。そして、2行目で、TCPクライアント部品を、クライアントという名前で作成します。3行目で、どのポートで通信するのかを指定します。4行目は、接続先サーバーのIPアドレスの指定です。そして、5行目で接続しようとします。

    ちなみに、「127.0.0.1」というのは、自分自身を表す特別なアドレスです。自分自身なので、ネットワークのテストなどを行うときに便利に使えます。

    10行ではじめての通信ソフト

    では、10行で簡単な通信を行うソフトを作ってみます。まずは、通信を受けるサーバー側からです。先ほどのサーバーソフトのプログラムに、受信した時の処理を2行追加しました。

    !「nakonet.nako」を取り込む。#1
    サーバーとはTCPサーバー。#2
    サーバーのポートは10001。 #3
    サーバーを開始。#4
    サーバーで受信した時は #5
      サーバーの受信データを表示。#6

    次にクライアント側です。こちらも、先ほどのクライアントソフトのプログラムに、接続した時の処理(5~6行目)を加えました。

    !「nakonet.nako」を取り込む。#1
    クライアントとはTCPクライアント。#2
    クライアントのポートは10001 #3
    クライアントのホストは「127.0.0.1」#4
    クライアントが接続した時は#5
      「こんにちは」をクライアントで送信。#6
    クライアントで接続。#7

    この2つのプログラムを実行するときは、先にサーバーから実行して、次にクライアントを実行してください。すると、サーバー側のメインフォームに「こんにちは」とクライアントから送信したメッセージが表示されるはずです。

    プログラムを実行したところ

    決められたメッセージが表示されるだけでは面白くないので、自分で好きなメッセージを送れるように、クライアント側を改造してみます。

    !「nakonet.nako」を取り込む。#1
    クライアントとはTCPクライアント。#2
    クライアントのポートは10001 #3
    クライアントのホストは「127.0.0.1」#4
    クライアントが接続した時は#5
      オンの間 #6
        「何を送りますか?」と尋ねる。#7
        もし、それが空ならば終わる。#8
        それをクライアントで送信する。#9
    クライアントで接続。#10

    クライアント側

    サーバー側

    このクライアントプログラムは、サーバーに対してユーザーが入力したメッセージを送信するようになっています。

    このプログラムの4行目では、自分自身を表すIPアドレス「127.0.0.1」を指定していますが、ここをネットワーク先のPCのアドレスに変更し、そこでサーバープログラムを起動すれば、ネットワーク先のPCに好きなメッセージを表示させることができます。

    ここまでで、TCP/IPの簡単な仕組みと、なでしこでのサーバーとクライアントの利用方法を見てきました。しかし、これではチャットとはいえません。そこで、次回、もう少しチャットらしいプログラムに改造していこうと思います。お楽しみに。

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン