エコーサーバー

説明

クライアントから送られて来た内容をそのままそのクライアントに送り返すだけのサーバープログラムです。

Studioで試す

以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。

Studio で開く

プログラム

port=7
server_conn_id$=bind$(port)
if len(server_conn_id$)=0 then
  print "接続受け付けの開始に失敗しました"
  end
end if
do
  packet@=receive@(server_conn_id$)
  if len(packet@)<>0 then
    client_conn_id$=packet@[0]
    message@=packet@[1]
    print client_conn_id$ + " からメッセージを受信しました"
    if not send(client_conn_id$, message@) then
      print "送信に失敗しました"
    end if
  end if
loop

解説

クライアントから送られてきた情報をそのまま送り返す echo サーバーです。

1行目は、サーバーが使用するポート番号を7に設定しています。

2行目は、指定されたポート(7)にサーバーをバインドし、その接続識別子を server_conn_id$ に代入しています。

3行目は、バインドが成功したかどうかをチェックしています。接続識別子の長さが0だった場合、バインドに失敗していると判断します。

4行目は、バインドに失敗した場合にエラーメッセージを出力します。

7行目から始まる do ループは、クライアントからの接続やメッセージを繰り返し待ち受けるための無限ループを開始します。

8行目では、サーバーの接続識別子を通じてクライアントからのパケット(データ)を受信し、packet@ に代入します。

9行目は、受信したパケットが空でないかどうかをチェックします。

10行目と11行目で、受信したパケットからクライアントの接続識別子とメッセージを取り出しています。

12行目は、クライアントからメッセージを受信したことを出力します。

13行目で、受信したメッセージを元のクライアントに戻すために send 関数を呼び出します。送信が失敗した場合、次の行でエラーメッセージが出力されます。