ひまわりで、TCP/IPを使って、チャットソフトなどの通信ソフトを作りましょう!
TCP/IPって何?
米国防総省の資金援助によるネットワークプロジェクトDARPANET(Defense Advanced Research Project Agency Network)で開発されたネットワークプロトコルです。80年代のはじめから急速に普及が進み、Internetの標準のプロトコルです。
命令の一覧
ひまわりでは、TCP/IPを使ったサーバーと、それに繋げるクライアントを作ることが出来ます。
以下に命令を列挙します。
TCP/IP TCPポート TCP/IPのポート番号s -1 TCPサービス名 TCP/IPのサービス名s -1 TCP文字列 TCP/IPで受信した文字列s -1 TCP送信元 TCP/IPでメッセージを送信したコンピューターのIPアドレスs -1 TCP接続 ?へ サーバー(IPアドレスまたはホスト名)?へTCP/IP接続する 356 TCP切断 TCP/IP接続を切断する 357 TCP接続状態 TCP/IP接続の接続状態を得る 358 TCP送信 ?を 接続中のサーバーへ文字列?を送信する 359 TCP受信処理設定 ?に クライアントより文字列を受信した時の処理を、ラベル?に設定する。 360 TCPサーバー起動 TCP/IPサーバーを起動する 361 TCPサーバー終了 TCP/IPサーバーを終了する 362 TCPサーバー接続先列挙 TCP/IPサーバーに接続しているコンピューターの『IPアドレス,名前』を列挙し、それに返す 363 TCPサーバーから送信 ?へ,?を サーバーに接続している?(名前)へ、文字列?を、送信する 364 TCPサーバー受信処理設定 ?に クライアントより文字列を受信した時の処理を、ラベル?に設定する。受信した文字列は、変数『TCP文字列』にある。 365
簡単なサンプル
以下は、簡単なTCP/IP通信ソフトです。
ネットワーク環境に接続して、サーバー側と、クライアント側を、1つずつ立ち上げてみてください。
クライアントの、接続先には、サーバー側のコンピューターのIPアドレス(または、コンピューター名)を入力し、「接続」ボタンを押します。もし、ここでエラーが発生しなければ、メッセージを書いて、「送信」ボタンを押すと、サーバー側の受信メモ部品に、メッセージが表示されます。
サーバー側 母艦の、タイトルは、「サーバー」
受信メモを、メモとして、作成。
その、サイズは、(0,0,400,300)
TCPポート=10000
TCPサーバー起動。
受信ラベルに、TCPサーバー受信処理設定
待機。
*受信ラベル
ホスト=TCP送信元
ホストの、「,」までを、切り取る。
受信メモは、受信メモ&ホスト&「>」&TCP文字列&「\n」
待機。クライアント側 母艦の、タイトルは、「クライアント」
「接続先」と、表示。
接続先エディタを、エディタとして、作成。
接続ボタンを、ボタンとして、作成。
その、イベントは、接続処理
「送信する内容」と、表示。
送信エディタを、エディタとして、作成。
送信ボタンを、ボタンとして、作成。
その、イベントは、送信処理
その、有効=オフ
待機。
*接続処理
TCPポート=10000
接続先エディタへ、TCP接続。
送信ボタンの、有効=オン
待機。
*送信処理
送信エディタを、TCP送信。
待機。
各命令の解説
上のサンプルを、見てもらえば、だいたい分かりそうですが、ここでは、くどくどと説明します。
まず、サーバー側から。
サーバーを開始するには、
と、まずポート番号を、指定してから、起動します。このポート番号についてですが、サーバーの種類によって、番号が決まっています。電子メールの送信なら25番、受信が110番、FTPなら21番です。もし独自のネットワークサービスプログラム、例えば自作のゲームなどを作るならこれらの番号以外を選ばなければなりません。
TCPポート=8000
TCPサーバー起動。
これだけで、サーバーが起動しました。
次に、サーバー側より、何か送られて来た場合の処理を設定します。
これは、『(ラベルの名前)に、TCPサーバー受信処理設定』と、書きます。
受信ラベルに、TCPサーバー受信処理設定
これで、もし、クライアント側より、何か送信があれば、指定したラベルへジャンプします。この時、受信した内容は、『TCP文字列』に、送信元のIPアドレスとホスト名は、『TCP送信元』に、代入されます。
次に、クライアント側です。
何はともかく、サーバーに接続しなければ始まりません。
ってな感じで、サーバーに接続します。
TCPポート=10000
接続先へ、TCP接続。
接続先には、IPアドレスか、ホスト名(ネットワークコンピューター名)を指定します。
ここで、もし、接続に失敗すれば、エラーメッセージを表示します。
接続に成功すれば、以下のようにして、文字列をサーバーへ送信できます。
「送信内容」を、TCP送信。
切断処理
任意のコンピューターの、サーバー接続をきるときは、『TCPサーバー切断』を使います。
母艦の、タイトルは、「サーバー」
受信メモを、メモとして、作成。
その、サイズは、(0,0,400,300)
TCPポート=10000
TCPサーバー起動。
受信ラベルに、TCPサーバー受信処理設定
’切断処理
切断エディタを、エディタとして、作成。
(切断エディタの、右側)に、切断ボタンを、ボタンとして、作成
その、イベントは(
もし、切断エディタ<>「」ならば、(
切断エディタの、TCPサーバー切断。
)。
TCPサーバー接続先列挙。
「繋がっているのは、以下のマシンです。\n{それ}」と、言う。
)。
待機。
*受信ラベル
ホスト=TCP送信元
ホストの、「,」までを、切り取る。
受信メモは、受信メモ&ホスト&「>」&TCP文字列&「\n」
待機。