• 検索結果がありません。

ISO( 国際標準化機構 ) により制定された異機種間のデータ通信を実現するためのネットワーク構造の設計方針. コンピュータの通信機能を 7 階層の階層構造に分割したモデルであり, 各層ごとに標準的な機能モジュールを定義している. 第 1 層 ( 物理層 ) データを通信回線に送出するための電気的な

N/A
N/A
Protected

Academic year: 2021

シェア "ISO( 国際標準化機構 ) により制定された異機種間のデータ通信を実現するためのネットワーク構造の設計方針. コンピュータの通信機能を 7 階層の階層構造に分割したモデルであり, 各層ごとに標準的な機能モジュールを定義している. 第 1 層 ( 物理層 ) データを通信回線に送出するための電気的な"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

−ネットワーク−

目的

TCP を利用したネットワーク上で離れたコンピュータ上で情報のやり取りを行うプログラムを作成・実行する 語句

プロトコル: コンピュータ間でデータのやり取りを行うための取り決め(規約)(→ OSI 参照モデル)

TCP/IP : インターネットで利用されている通信プロトコルの総称.TCP は Transmission Control Protocol の ことで,通信ソフトを特定して通信路を確立するプロトコルを指す.IP は Internet Protocol のことで, 通信経路に関するプロトコルを指す.(IP アドレスなど) インターネットアドレス(IPアドレス) : インターネット上でコンピュータを区別するために用いられる場所(住所) (現在,0から 255 までの整数を4つ並べている(IPv4 32ビット)。例えば 158.217.186.254 一つの数値で2の8乗(8ビット分)のデータのため,合計32ビット) 人間にとっては覚えにくいので名前(ドメイン名)がつけられている場合もある (→URL) (DNS(Domain Name Server)により相互変換ができる)

将来,IPv6として128ヒ Bit が使われるようになる予定.

URL(Uniform Resource Locator) : インターネット上に存在する情報資源場所を指す記述

(サーバ名,ポート番号,フォルダ名,ファイル名などから構成される) www.iecs.kansai-u.ac.jp などの表記(および,プロトコル) ポート: コンピュータが届いたデータがどのプログラム宛てであるかを知るために利用される入出力口 ネットワークを通してコンピュータへ送られるデータはどこのコンピュータ宛てであるかの情報(IP アド レス)とどのようなプログラム宛てであるかの情報(ポート番号)がついている ソケット: TCP/IP 通信を行なうための IP アドレスとポート番号を組み合わせたネットワークアドレスであり, プ ログラム間でデータのやり取りする通信路の一端を指す.通信路とプログラムをつなぐ役割をし,ど のプログラムへデータを送るのかを識別できる サーバ: 他のプログラムやコンピュータからの要求(リクエスト)に応じて処理(サービス)を提供する働きをす るプログラムおよびそのコンピュータをいう.(Web サーバ,ftp サーバ,メールサーバ,アプリケーショ ンサーバなど) クライアント: 要求(リクエスト)を出すプログラムやコンピュータ (一般利用者側のコンピュータ)

サーバ

IP アドレス (158.217.186.1)

クライアント

IP アドレス (158.217.186.64)

要求(リクエスト)

処理(サービス)

( Web サーバ,メールサーバ など)

サーバ用

プログラム

クライアント用

プログラム

※ネットワークによりデータのやり取りを行うプログラムでは サーバ側とクライアント側のプログラムが必要(それぞれのコンピュータで実行させる) OSI 参照モデル(OSI 基本参照モデル, OSI 階層モデル) :

(2)

ISO(国際標準化機構)により制定された異機種間のデータ通信を実現するためのネットワーク構造の設 計方針.コンピュータの通信機能を 7 階層の階層構造に分割したモデルであり,各層ごとに標準的な機能 モジュールを定義している. 第 1 層 (物理層) データを通信回線に送出するための電気的な変換や機械的な(ハードウェアの)作業を 受け持つ階層.ピンの形状やケーブルの特性なども定められる. 第 2 層 (データリンク層) 通信相手との物理的な通信路を確保し,通信路を流れるデータのエラー検出な どを行なう. 第 3 層 (ネットワーク層) 相手にデータを届けるための通信経路の選択や通信経路内のアドレス(住所)の 管理を行なう. 第 4 層 (トランスポート層) 相手まで確実に効率よくデータを届けるためのデータ圧縮や誤り訂正,再送制 御などを行なう. 第 5 層 (セッション層) 通信プログラム同士がデータの送受信を行なうための仮想的な経路(コネクション) の確立や解放を行なう. 第 6 層 (プレゼンテーション層) 第 5 層から受け取ったデータをユーザの理解できる形式への変換と通信 に適した形式への変換を行なう. 第 7 層 (アプリケーション層) データ通信を利用した様々なサービスを人間や他のプログラムに提供する. サーバ IP アドレス (158.217.186.1) クライアント IP アドレス (158.217.186.64) 要求(リクエスト) 処理(サービス) サーバ用 プログラム クライアント用 プログラム 第7層 第6層 第5層 第4層 第3層 第2層 第1層 第7層 第6層 第5層 第4層 第3層 第2層 第1層

(3)

各プログラムの処理内容

※ ネットワークで接続されているコンピュータ間でデータを通信するプログラムの作成 → java.net パッケージを利用

[1]クライアント用プログラムの処理の手順

①ソケットを開く Socket クラスのオブジェクトの作成 → サーバーの IP アドレス(あるいは URL)とポート番号を指定 ※Socket クラスのコンストラクタ :: Socket(ホスト名, ポート番号) (例) Socket(158.217.112.1, 8111) ②入出力ストリームを開く(入出力ストリームの取得)

Socket クラスの getInputStream(入力ストリーム用), getOutputStream(出力ストリーム用)メソッドを利用 ※ Socket クラスのこれらのメソッドにより,ストリームを設定

各メソッドの型:: InputStream getInputStream( ) throws IOException OutputStream getOutputStream( ) throws IOException ③サーバの通信規則(プロトコル)に応じてデータをストリームに書き出しあるいは読み込み (教科書 p192,193 参照) (例)読み込み: BufferedReader クラスのインスタンスメソッド readLine( ) DataInputStream クラスのインスタンスメソッド readInt( ) 書き出し: PrintStream クラスのインスタンスメソッド println( ) DataOutputStream クラスのインスタンスメソッド writeInt( ) (④ストリームを閉じる) データストリームのオブジェクトをクローズする。(データストリームの close メソッドを利用) ⑤ソケットを閉じる ソケットクラスのオブジェクトをクローズする。(ソケットクラスの close メソッドを利用)

[2]サーバ用プログラムの処理の手順

①サーバソケットを開く ServerSocket クラスのオブジェクトの作成 → 予め指定されたポート番号もしくはクライアント用のプログラムで設定されたとポート番号を指定 ※ServerSocket クラスのコンストラクタ :: ServerSocket(ポート番号) (例) ServerSocket(8111) ②クライアントからの接続要求を受け付ける処理

ServerSocket クラスの accept( )メソッドを利用

※ accept( )メソッドの型:: Socket accept( ) throws IOException → 戻り値が Socket 型 ③②で受けた接続要求を Socket クラスのオブジェクトとして受ける (例)②と合わせて,以下のように表現できる.( serverS は ServerSocket クラスのオブジェクトとする) Socket clientS; clientS = serverS.accept( ); [注意] この Socket オブジェクトを通してクライアントとの通信を行う.ServerSocket クラスのオブジェクト は元のポートに戻り,別の(クライアントからの)要求を待つ.(別のSocket クラスのオブジ ェクトを作成して対応すればよい) ServerSocket オブジェクトはクライアントから要求が送 られてくることを監視(要求待ち)するために利用される. ④入出力ストリームを開く(入出力ストリームの取得)

(4)

※ クライアントの場合[1]②と同様 ⑤クライアントとの通信規則(プロトコル)に応じてデータをストリームに書き出しあるいは読み込み ※ クライアントの場合[1]③と同様 (⑥ストリームを閉じる) データストリームのオブジェクトをクローズする。(データストリームの close メソッドを利用) ※ クライアントの場合[1]④と同様 ⑦ソケットを閉じる ソケットクラスのオブジェクトをクローズする。(ソケットクラスの close メソッドを利用) ※ クライアントの場合[1]⑤と同様

プログラム例

(1)echo サーバへのアクセスプログラム(教科書 p204) echo サーバ: クライアントからのデータを受け取り,そのデータをそのままクライアントに送り返すサービス UNIX のサーバには標準装備.ポート番号は 7.

サーバ

echo サーバ

クライアント

要求(リクエスト)

処理(サービス)

サーバ用

プログラム

クライアント用

プログラム

こんにちは こんにちは 入力 >こんにちは 出力 >こんにちは

(5)

※サーバ側のプログラムはすでに作成済みで,実行されているのでクライアント側のプログラムだけ作 成すればよい. 1:// EchoClient.java 2:// リスト 15.1 echo クライアント(教科書 p204) 3:import java.io.*; 4:import java.net.*; 5:

6:public class EchoClient {

7: public static void main(String[ ] args) throws IOException { 8: Socket echoS = null;

9: BufferedReader in = null; 10: DataOutputStream out = null; 11: try {

12: echoS = new Socket("www.iecs.kansai-u.ac.jp", 7);

13: in = new BufferedReader(new InputStreamReader(echoS.getInputStream())); 14: out = new DataOutputStream(echoS.getOutputStream());

15: } catch (UnknownHostException e) { 16: System.out.println("ホストに接続できません。"); 17: System.exit(1); 18: } catch (IOException e) { 19: System.out.println("IO コネクションを得られません。"); 20: System.exit(1); 21: } 22:

23: BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); 24: String typedString;

25:

26: while ((typedString = stdIn.readLine( )) != null) { 27: out.writeBytes(typedString); 28: out.writeByte('¥n'); 29: System.out.println("サーバからのエコー: " + in.readLine()); 30: } 31: in.close( ); 32: out.close( ); 33: stdIn.close( ); 34: echoS.close( ); 35: } 36:} Socket クラスのオブジェク トの作成と初期化 [1]① ネ ッ ト ワ ー ク 用 の コ ン ポ ー ネ ン ト を import 入出力ストリームの設定 [ 1 ] ② ( 1 3 行 目 が 入 力 用,14行目が出力用) Socket クラスのオブジェクト 作成時のエラー処理 キーボードからの入力される データを格納するためのバッ ファ付きストリームの設定 バッファより1行ずつ読み込 み , 文 字 列 型 の 変 数 typeString に格納 (サーバからの)入力スト リームへ読み込み [1]③ (サーバへの)出力ストリームを 通して文字を書き出す[1]③ ストリームとソケ ットの close (ストリーム3つ とソケット1つ) [1]④⑤

(6)

(2)サーバからクライアントへの情報伝達プログラム(独習 Java p350,351 参考) サーバ上で乱数を発生.その乱数をクライアントに渡して、その内容を CRT に表示 ・サーバ側とクライアント側のプログラムを作成 ・ポート番号は適当な番号でよい

サーバ

クライアント

要求(リクエスト)

処理(サービス)

サーバ用

プログラム

クライアント用

プログラム

出力 >80 乱数の発生 0∼100 80

※17∼30 行目の while 文(無限ルーチン)で ServerSocket オブジェクトの accept( )を呼んで,クライアントからの要求 を待つ.要求が到着すると Socket オブジェクトが返される.処理が終了したら close( )する.その後,19 行目で再び待 つ.while 文内で再び要求が来るたびに繰り返し,「要求待ち→処理→close」を繰り返す. サーバ側プログラム ServerSocketDemo.java 1:import java.io.*; 2:import java.net.*; 3:import java.util.*; 4:import java.lang.*; 5: 6:class ServerSocketDemo { 7:

8: public static void main(String args[ ]) { 9: try {

10: // ポートを取得する 11: int port = 8111; 12:

13: // サーバーソケットを作成する

14: ServerSocket ss = new ServerSocket(port); 15: 16: // 無限ループを作成する 17: while(true) { 18: // クライアントからの要求を受け取る設定 19: Socket s = ss.accept( ); 20: 21: // 結果をクライアントに書き込む 22: OutputStream os = s.getOutputStream( );

23: DataOutputStream dos = new DataOutputStream(os); 24: 25: // 乱数の生成とその値を出力用ストーリムのメソッドにより出力する 26: dos.writeInt((int)(Math.random( )*100)); 27: 28: os.close( ); //ストリームのクローズ 29: s.close( ); //ソケットをクローズ 30: } // while 文終了 31: } 32: catch (Exception e) { 33: System.out.println("Exception: " + e); 34: } 35: } 36:} ネットワーク処理用コンポーネントのインポート ポート番号の設定 ServerSocket オブジェクトの作成 (コンストラクタの引数でポート番号を指 定.ポート番号はクライアント用プログラ ム内のポート番号に一致)[2]① ポート番号 出力用ストーリムDataOutputStream のオブジ ェクトのメソッドwriteInt( )を利用して,乱数の 結果を出力する. [2] ⑤ → 出力先はソケット s に対応 →(ソケット番号が一致する)クライアント ストリームとソケットを close ServerSocket オブジェクトの accept( ) に よりクライアントからの要求を待ち,要求 が来たら Socket オブジェクトを渡す ソケットに対するストリームの設定 (ソケットのメソッドの利用) [2]④ クライアントへデータを渡すためのストリーム 設定のためのコンポーネントの設定 Socket ,ストリームクラスの例外処理 (ポートの指定が文字列の場合など) [2]②③ [2]⑥⑦

(7)

実行例

○ 初めにサーバ側のプログラムを実行し,後にクライアント側のプログラムを実行する。(クライアント側のプログラ ムの実行によりリクエストがサーバに出される.)本来,別コンピュータで行われるが,同一コンピュータ上でも 実行できる.(自分の PC から自分の PC へ情報を渡す) [サーバ側] E:\javac ServerSocketDemo.java E:\java ServerSocketDemo 何も表示されない [クライアント側] E:\javac SocketDemo.java E:\java SocketDemo 0:73 1:41 2:37 … 19:58 E:\ 20 個の乱数による データが表示される クライアント側プログラム SocketDemo.java 1:import java.io.*; 2:import java.net.*; 3: 4:class SocketDemo { 5:

6: public static void main(String args[]) { 7: try { 8: // サーバーとポートを取得する 9: String server = “158.217.186.25 ”; 10: int port = 8111; 11: 12: for(int j=0; j<20; j++){ 13: // ソケットを作成する

14: Socket s = new Socket(server, port); 15:

16: // サーバーから乱数を読み取る 17: InputStream is = s.getInputStream( );

18: DataInputStream dis = new DataInputStream(is); 19: 20: int i = dis.readInt( ); 21: 22: // 結果を表示する 23: System.out.println(j+": "+i); 24: 25: // ストリームとソケットをクローズする 26: is.close( ); 27: s.close( ); 28: } // for 文終了 29: } 30: catch (Exception e) { 31: System.out.println("Exception: " + e); 32: } 33: } 34:} サーバの IP アドレスの設定 (URL でも可能) 入出力用ストリームクラスを利用するために java.io をインポート ネットワーク用クラスの利用のためにjava.net をイン ポート ポート番号の設定(サーバ側のプログラムで 設定した番号と同じ) 20 個の乱数をサーバから受け取るためにデ ータを受け取り画面に表示する処理を for 文 で 20 回分行う Socket クラスのオブジェクトの作成 [1]① 引数はサーバの IP アドレスとポート番号 サーバとのデータをやり取りするためのス トリームの取得と設定 [1]② ストリームを通して整数(データ)を読み込 む [1]③ ストリームとソケットの close [1]④⑤ Socket オブジェクトに対する例外処理 サーバ側の処理のイメージ クライアント側のイメージ Socket オブジェクト ServerSocket オブジェクト Socket オブジェクト 処理 処理 処理 処理 入出力ストリーム

クライアント

サーバ

(8)

(3)カウンセラープログラム(教科書 p206∼211) クライアントからデータを入力することにより,クライアントからリクエストをサーバに渡す.サーバでは乱数によ って回答(文字列)を決定し,その文字列をクライアントへ返す.その文字列はクライアントのコンピュータ上に表 示される.クライアント側で文字列の入力があるたびにリクエストがサーバに渡される.サーバ側のプログラムで は文字列の送信(リクエスト)があるたびにサービスを行う処理を実行する. サーバ クライアント 要求(リクエスト) 処理(サービス) サーバ用 プログラム クライアント用 プログラム あなた >今日は カウンセラー >それで? 乱数を発生させ て回答を決定 「それで?」 クライアント用プログラム (KaiwaClient.java) 1:import java.io.*; 2:import java.net.*; 3:

4:public class KaiwaClient {

5: public static void main(String[] args) throws IOException { 6:

7: Socket kaiwaS = null; 8: BufferedReader in = null; 9: PrintStream out = null; 10:

11: try{

12: kaiwaS = new Socket("158.217.186.46", 8111);

13: in = new BufferedReader( new InputStreamReader( kaiwaS.getInputStream( )) ); 14: out = new PrintStream( kaiwaS.getOutputStream( ) );

15: } catch (UnknownHostException e) { 16: System.out.println("ホストに接続できません。"); 17: System.exit(1); 18: } catch (IOException e) { 19: System.out.println("IO コネクションを得られません。"); 20: System.exit(1); 21: } 22:

23: BufferedReader stdIn = new BufferedReader( new InputStreamReader( System.in ) ); 24: String fromServer;

25: String fromUser; 26:

27: while ((fromServer = in.readLine()) != null) {

28: System.out.println("カウンセラー: " + fromServer); 29: if (fromServer.equals("ではまたにしましょう。"))break; 30: System.out.print("あなた: "); 31: fromUser = stdIn.readLine( ); 32: out.println(fromUser); 33: } 34: 35: out.close( ); 36: in.close( ); 37: stdIn.close( ); 38: kaiwaS.close( ); 39: } 40:} Socket オブジェクトの作成 (引数は IP アドレス,ポート番 号) Socket クラスの例外処理(IP アド レスのサーバが見つからない場 合) Socket クラスの例外処理(IP アド レスの設定が数値,ポート番号が 文字列の場合)など 入力用ストリームのオブジェクト in 出力用ストリームのオブジェクト out Socket オブジェクトより入力と出力 ストリームを開き,さらにそのストリ ームを拡張 キーボードからの入力データを取り込める よう入力ストリームを設定(バッファ利用に よるストリームの設定) Socket オブジェクトからの入 力用ストリームを利用してサー バからのデータを1行ずつ読み 込んでいる. 読 み 込 ん だ 文 字 列 は fromServer へ入れている. 出力用ストリームに文字列 fromUser を書き出している. サーバに fromUser を送っている ストリームの close ソケットの close キ ー ボ ー ド から の文字 列 を 1 行 読 み込み

(9)

サーバー用プログラム (KaiwaServer.java) 1:import java.net.*;

2:import java.io.*; 3:import java.util.*; 4:

5:public class KaiwaServer {

6: public static void main(String[] args) throws IOException { 7: ServerSocket serverS = null;

8: Socket clientS = null; 9: try{

10: serverS = new ServerSocket(8111); 11: } catch (IOException e) { 12: System.out.println("ポートにアクセスできません。"); 13: System.exit(1); 14: } 15: 16: try{ 17: clientS = serverS.accept(); 18: } catch (IOException e) { 19: System.out.println("Accept に失敗しました。"); 20: System.exit(1); 21: } 22:

23: PrintStream out = new PrintStream( clientS.getOutputStream( ), true);

24: BufferedReader in = new BufferedReader( new InputStreamReader( clientS.getInputStream() ) ); 25:

26: String fromC, fromUser; 27: Counsel c = new Counsel();

28: out.println("何でも話してください");

29: while ( (fromUser = in.readLine( ) ) != null) { 30: fromC = c.kaiwa(fromUser); 31: out.println(fromC); 32: if (fromC.equals("ではまたにしましょう。")) break; 33: } 34: in.close(); 35: out.close(); 36: clientS.close(); 37: serverS.close(); 38: } 39:} 40: 41:class Counsel{ 42: int i, n=0;

43: String kaiwa(String user){ 44: i = (int)(Math.random()*5); 45: String henji[] = { 46: "興味がありますね。", 47: "ほう、そうですか。", 48: "もっと聞かせてください。", 49: "それはそれは。", 50: "それで?"}; 51: n++; 52: if(n>10) return "ではまたにしましょう。"; 53: else if(i==0) return (user + "とは" + henji[i]); 54: else return henji[i];

55: } 56:} ServerSocket オブジェクト の設定 ServerSocket オブジェクト設 定に対する例外(エラー)処 理 クライアントから接続要求を 受け付ける処理 クライアントから要求があると Socket オブジェクトを返し, clientS を設定する クライアントからの入力用ストリー ムの設定(開く) クライアントからの出力用ストリー ムの設定(開く) クライアントへ文字列を送る クライアントから送ってくる文字列を1 行ずつ読み込む (while 文なので繰り返し,読み込む) Socket の close と ServerSocket の close ストリームの close 乱数を発生させて,適当な‘返 事(文字列)’を設定し,その 文字列を戻すメソッド

(10)

実行例 (4)マルチクライアントによるカウンセラープログラム(教科書 p212∼213) 複数のクライアントからの接続要求を処理する. サーバ側のプログラムのみ変更する. クライアントからの接続要求を(accept( )メソッドにより)受け取った後,そのクライアントへのサービスはスレッド に処理させる.別のクライアントから接続要求があった場合は,そのクライアントへのサービスは別スレッドに処理 させる.すなわち,サーバ側プログラム内で接続要求を受け取る部分で,新しいスレッドを作成し,そのスレッド 内でサービスを行う. [処理の流れ] ①サーバはクライアントからの要求をうけると(クライアントとの通信を行うための)ソケット(正確には Socket オ ブジェクト)を作成する. ②ソケットを引数にスレッドを作成する. ③スレッド内でソケットを通じて、クライアント側と情報をやり取りする. ④(スレッド内で勝手にクライアントと処理が行われる) ⑤ServerSocket オブジェクトは別のクライアントからの接続要求を待つ. [サーバ側] e:\javac KaiwaServer.java (コンパイル) e:\java KaiwaServer (実行) 表示無し [クライアント側] e:\javac KaiwaServer.java (コンパイル) e:\java KaiwaServer (実行) IO コネクションを得られません。 (サーバ側が実行していない 場合のエラーメッセージ) e:\java KaiwaServer (実行) カウンセラー: 何でも話してください あなた: こんにちは カウンセラー: ほう、そうですか。 あなた: そうなんですよ。 カウンセラー: ほう、そうですか。 あなた: Socket オブジェクト ServerSocket オブジェクト 処理 入出力ストリーム

クライアント1

サーバ

処理 処理 処理

スレッド

Socket オブジェクト 処理

スレッド

Socket オブジェクト 処理

スレッド

Socket オブジェクト Socket オブジェクト Socket オブジェクト

クライアント2

クライアント3

スレッドを利用したマルチクライアントの処理概念図

(11)

サーバ側プログラム(KaiwaMServer.java) 1:import java.net.*;

2:import java.io.*; 3:

4:public class KaiwaMServer {

5: public static void main(String[] args) throws IOException { 6: ServerSocket serverS = null;

7: boolean end = true; 8: try {

9: serverS = new ServerSocket(1234); 10: } catch (IOException e) {

11: System.out.println("ポートにアクセスできません。"); 12: System.exit(1);

13: } 14: while(end){

15: new KaiwaMSThread( serverS.accept( ) ).start( ); 16: } 17: serverS.close(); 18: } 19:} スレッド内処理用プログラム(KaiwaMSThread) 1:import java.net.*; 2:import java.io.*; 3:import java.util.*; 4:

5:public class KaiwaMSThread extends Thread { 6: Socket socket = null;

7: 8: public KaiwaMSThread(Socket s) { 9: super("KaiwaMSThread"); 10: socket = s; 11: } 12:

13: public void run( ) { 14: try{

15: PrintStream out = new PrintStream(socket.getOutputStream(), true); 16: BufferedReader in = new BufferedReader(

17: new InputStreamReader(socket.getInputStream())); 18:

19: String fromC, fromUser; 20: Counsel c = new Counsel();

21: out.println("何でも話してください"); 22: while ((fromUser = in.readLine()) != null) { 23: fromC = c.kaiwa(fromUser); 24: out.println(fromC); 25: if (fromC.equals("ではまたにしましょう。")) break; 26: } 27: in.close(); 28: out.close(); 29: socket.close(); 30: } catch (IOException e) { 31: System.out.println("run メソッド実行中例外: " + e); 32: System.exit(1); 33: } 34: } 35:} ServerSocket オ ブ ジ ェ ク ト の accept メソッドにより,クライア ントから要求を持つ スレッドの作成(Thread のサブクラス である KaiwaMSThread のオブジェクトを 作成 (コンストラクタの引数がソケット) KaiwaMSThread のオブジェクト を作成後,スレッドを実行 スレッドなので Thread クラスの継承 KaiwaMSThread のコンストラクタ 引数は Socket オブジェクト run( )メソッド:スレッド内の実行内容 この部分の処理は KaiwaServer.java と同一

(12)

その他 InetAddress クラス インターネットアドレスに関するクラス.java.net パッケージ に含まれる. インターネットアドレスに関する情報収集に利用される. [インスタンスメソッド例] byte[ ] getAddress( ) アドレス情報を含むバイトの配列を返す.データはネットワークバイトオーダ ー(最初の要素の上位バイト)中に存在する String getHostAddress( ) アドレス情報を表す文字列を返す String getHostName( ) ホスト名を表す文字列を返す [クラスメソッド例]

InetAddress getByName(String hostname) DNS によって提供されている情報を使って,名前からアド

レスへの変換を実行する.IP アドレスを返す

InetAddress[] getAllByName(String hostname) ホストが複数のアドレスを持っている場合に,名前から 青ドレスへの変換を実行する.IP アドレスの配列を返す

InetAddress getLocalHost( ) ローカルホストの IP アドレスを返す

36:

37:class Counsel{ 38: int i, n=0;

39: String kaiwa(String user){ 40: i = (int)(Math.random()*5); 41: String henji[] = { 42: "興味がありますね。", 43: "ほう、そうですか。", 44: "もっと聞かせてください。", 45: "それはそれは。", 46: "それで?"}; 47: n++; 48: if(n>10) return "ではまたにしましょう。"; 49: else if(i==0) return (user + "とは" + henji[i]); 50: else return henji[i];

51: } 52:}

参照

関連したドキュメント

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

パスワード 設定変更時にパスワードを要求するよう設定する 設定なし 電波時計 電波受信ユニットを取り外したときの動作を設定する 通常

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

層の項目 MaaS 提供にあたっての目的 データ連携を行う上でのルール MaaS に関連するプレイヤー ビジネスとしての MaaS MaaS

生活のしづらさを抱えている方に対し、 それ らを解決するために活用する各種の 制度・施 設・機関・設備・資金・物質・

購読層を 50以上に依存するようになった。「演説会参加」は,参加層自体 を 30.3%から

これら諸々の構造的制約というフィルターを通して析出された行為を分析対象とする点で︑構

行ない難いことを当然予想している制度であり︑