ソケット通信とは
プロデルでは、TCP/IP通信機能を使ってソケット通信ができます。
ここではTCP/IP通信機能を使って簡易的なメッセージ通信プログラムを作ります。
このチャットプログラムでは、1対1ので会話するもので、一人がサーバとなりもう一人がクライアントとなります。
サーバ側
まずサーバを作ります。
サーバでは外部PCからの要求に応答するための「TCPIPサーバ」種類を作ります。
「起動する」手順で指定したポート番号への要求を受け付けます。クライアントから要求を受けると「受信した時」のイベント手順が実行されます。
この例では、クライアントからTCP5000番に要求があったときに「サーバ受信する」手順が実行されます。
このときに「この時のクライアント」からクライアントを制御するための「TCPIPクライアント」種類のオブジェクトが取得できます。クライアンからのメッセージを受け取ったり、返信したりするときは、このクライアントを使います。
この例では、クライアントからの接続要求を受け取った後に、クライアントから送られてきたメッセージを受け取るために「受信した時」の手順を指定します。
「Produire.Network.dll」を利用する
画面表示する
サーバというTCPIPサーバを作る
サーバのポート番号は、5000
サーバの受信した時の手順は、サーバ受信する
サーバを起動する
待機する
サーバ受信する手順
クライアントをこの時のクライアントとする
出力欄に「[クライアントの相手先アドレス]から接続要求がありました[改行]」を挿入する
出力欄にクライアントの受信テキストを挿入する
出力欄に改行を挿入する
クライアントの受信した時の手順は、クライアント受信する
終わり
クライアント受信する手順
出力欄にこの時の受信テキストを挿入する
出力欄に改行を挿入する
終わり
画面表示する手順
窓というウィンドウを作る
そのタイトルを「TCP/IP通信サーバ」に変える
出力欄という文章テキストを窓に作る
そのドッキング方向を全体に変える
そのフォント名を「MS ゴシック」に変える
その文字サイズを14に変える
窓の閉じた時の手順は、閉じたとき
窓を表示する
終わり
閉じたときの手順
サーバを停止する
終わり
クライアント側
次にクライアントを作ります。クライアントは、TCPIPクライアントを使います。
この例では、サーバのTCP5000番へ接続して、メッセージを送り切断します。
なおここではサーバとクライアントが同じパソコンであることを前提にしています。
サーバが別のパソコンのときは、「接続する」手順で指定するホスト名に、そのパソコンのIPアドレスを指定するかコンピュータ名に「\\」を付けたものを指定してください。
またその際にサーバ側ファイヤウォールの設定でTCPIPポート5000番を受け取れるようにする必要があります。
「Produire.Network.dll」を利用する
クライアントというTCPIPクライアントを作る
クライアントの使用ポート番号は、5000
クライアントを「localhost」へ接続する
クライアントから「こんにちは[改行]さようなら」を送信する
クライアントを切断する
すぐに切断せずに、メッセージが入力された際に「送信」手順を実行すれば、
常時メッセージをサーバに送ることができます。
チャットプログラムにするための応用方法
このチャットプログラムでは、1対1の通信しかできませんが、
サーバが要求を受けたクライアントを記憶しておき、一つのクライアントからメッセージを受けたときに
全クライアントに同じメッセージを配信するようにすることで、
ちょっとしてチャットプログラムを作ることができます。