TCP/IP


 ひまわりで、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送信
  待機。

各命令の解説

上のサンプルを、見てもらえば、だいたい分かりそうですが、ここでは、くどくどと説明します。
 まず、サーバー側から。
サーバーを開始するには、
TCPポート=8000
TCPサーバー起動。
と、まずポート番号を、指定してから、起動します。このポート番号についてですが、サーバーの種類によって、番号が決まっています。電子メールの送信なら25番、受信が110番、FTPなら21番です。もし独自のネットワークサービスプログラム、例えば自作のゲームなどを作るならこれらの番号以外を選ばなければなりません。

これだけで、サーバーが起動しました。

 次に、サーバー側より、何か送られて来た場合の処理を設定します。
受信ラベルに、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」
待機。

戻る