12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

Similar documents
(Microsoft PowerPoint - \223\306\217KJava\221\346\202R\224\305.ppt)

PowerPoint Presentation

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

PowerPoint Presentation

4章 システム評価

Microsoft PowerPoint ppt

ネットワークプログラミング(導入部)

デジタル表現論・第6回

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

プログラミングA

Microsoft PowerPoint - netprog_2015_07.ppt [互換モード]

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

JavaプログラミングⅠ

オブジェクト指向プログラミング・同演習 5月21日演習課題

K227 Java 2

JavaプログラミングⅠ

JAVA 11.4 PrintWriter 11.5

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

9.3 同期 共有データへの読み書きの同期 複数のスレッドから共有データを読み書きするときに発生する問題について 一つのフィールドに対して複数のスレッドが同時にアクセスする可能性がある場合 その順番によっては整合性が保てなくなる可能性があるので スレッドの制御フローが独立していては困ることがある 次

Java講座

Microsoft PowerPoint - OOP.pptx

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

デジタル表現論・第4回

例外処理とファイル入出力

問題1 以下に示すプログラムは、次の処理をするプログラムである

Prog1_15th

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

2

r1.dvi

Prog2_10th

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint - chap10_OOP.ppt

JavaプログラミングⅠ

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

プログラミング入門1

基本情報STEP UP演習Java対策

Javaプログラムの実行手順

Programming-C-9.key

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

PowerPoint プレゼンテーション

2

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

2

Microsoft PowerPoint - prog13.ppt

メソッドのまとめ

untitled

Microsoft PowerPoint - prog13.ppt

メソッドのまとめ

スライド 1

Prog1_10th

Javaの作成の前に

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

プログラミング入門1

プログラムの基本構成

Microsoft PowerPoint ppt

Microsoft PowerPoint - lec06 [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

PowerPoint プレゼンテーション

2

PowerPoint プレゼンテーション

JAVA入門

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

Network Programming

プログラミング基礎I(再)

プログラミング入門1

ファイル入出力Ⅰ

メディプロ1 Javaプログラミング補足資料.ppt

通信ネットワーク補足 TCP サーバプログラムその 14 フロー制御基本は確実に伝達することでした 次に受け取るべき情報の確認応答 (ACK 番号 = 受け取った シーケンス番号 + 受信データ量 ) のメッセージ受信で相手が受け取ったと判断する訳ですがその応答セグメントを待っていると遅くなります

ファイル操作-バイナリファイル

Microsoft PowerPoint - prog03.ppt

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

スライド 1

Prog1_11th

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

文字列操作と正規表現

Microsoft Word - CompA-Ex doc

DVIOUT-exer

GEC-Java

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Android Layout SDK プログラミング マニュアル

ALG2012-F.ppt

Java言語 第1回

基礎計算機演習 実習課題No6

untitled

Prog1_6th

Microsoft Word - java a.doc

JavaプログラミングⅠ

GEC-Java

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

Transcription:

Java 独習第 3 版 12.1 インターネットアドレス 12.2 サーバーソケットとソケット 2006 年 7 月 5 日 ( 水 ) 南慶典

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある www.mycompany.com インターネットアドレスをドットストリング表記からドット 10 進表記へ変換するのが DNS(Domain Name System) の役割 ドットストリング表記 ( www.obsorne.com など ) ドット 10 進表記 ( 200.200.200.200 など )

InetAddress クラス java.net パッケージの InetAddress クラスは インターネットアドレスをカプセル化している InetAddress クラスに定義されている主なインスタンスメソッド メソッド byte[] getaddress() 説明 アドレス情報を含むバイトの配列を返す データはネットワークバイトオーダー ( 最初の要素が上位バイト ) で格納される String gethostaddress() アドレス情報を表す文字列を返す String gethostname() ホスト名を表す文字列を返す

InetAddress のメソッド 1 getbyname() メソッド static InetAddress getbyname(string hostname) throws UnknownHostException DNS によって提供される情報を使って 名前からアドレスへの変換を実行する getallbyname() メソッド static InetAddress getallbyname(string hostname) throws UnknownHostException ホストが複数のアドレスもっている場合使用する InetAddress オブジェクトの配列を取得できる

InetAddress のメソッド 2 2 つのメソッドの hostname には インターネットのホストの名前を指定 ドットストリング表記 ( www.obsorne.com など ) ドット 10 進表記 ( 200.200.200.200 など ) getlocalhost() メソッド static InetAddress getlocalhost throws UnknownHostException このメソッドからは ローカルホストの情報をカプセル化した InetAddress オブジェクトが返される

プログラム例 import java.net.*; class InetAddressDemo { public static void main(string[] args) { try{ // アドレスを取得する InetAddress ias[] = InetAddress.getAllByName(args[0]); for (int i=0; i<ias.length;i++){ System.out.println(ias[i].getHostName()); System.out.println(ias[i].getHostAddress()); byte bytes[] = ias[i].getaddress(); for(int j=0;j<bytes.length;j++){ if(j>0) System.out.print("."); if(bytes[j] >=0)

System.out.print(bytes[j]); else System.out.print(bytes[j]+256); System.out.println(""); catch(exception e){ e.printstacktrace(); 実行結果 >java InetAddressDemo localhost localhost 127.0.0.1 127.0.0.1

12.2 サーバーソケットとソケット ソケット ソケットとは 2 つのマシン間の双方向通信経路の一端 2 つのアプリケーションが 信頼性のある順次データ交換を行うためのメカニズムを提供 これはソケットが TCP(Transmission Control Protocol) と IP(Internet Protocol) を使用することによって実現されている ServerSocket クラスと Socket クラスはクライアント / サーバーアプリケーションを作成するのに使用する

ServerSocket コンストラクタ ServerSocket コンストラクタ ServerSocket(int port) throws IOException port は クライアントからの要求を監視するためのソフトウェアポート ほかの形式のコンストラクタは 送られてくる要求の待ち行列を制限したり 特定のアドレスをバインド ( 監視 ) したりするものである accept() メソッド Socket accept() throws IOException クライアントから送られてくる要求を監視する このメソッドは要求が到着するまで待機する accept() メソッドからは クライアントとの通信に使用する Socket オブジェクトが返される close() メソッド void close() throws IOException サーバーソケットをクローズする

Socket クライアントとサーバーのデータ交換には Socket クラスを使う このクラスのコンストラクタの 1 つを次に示す Socket クラス Socket(String hostname, int port) throws UnknownHostException, IOException hostname はサーバーホストの名前で ドットストリング表記でもドット 10 進表記でも構わない port は そのサーバーのソフトウェアポートで このソケットの接続先 ソケットの作成後は 通信に使う入力ストリームと出力ストリームを取得しなければならない

Socket getinputstream() メソッド getoutputstream() メソッド InputStream getinputstream() throws IOException OutputStream getoutputstream() throws IOException InputStream オブジェクトと OutputStream オブジェクトは通常 それぞれ DateInputStream オブジェクトと DataoutputStream オブジェクトを作成するのに使用する close() メソッド void close() throws IOException サーバーソケットをクローズする

import java.io.*; import java.net.*; import java.util.*; 例 12.2 サーバーアプリケーション 次の例は 簡単なクライアント / サーバーアプリケーションであり クライアントはサーバーに接続して 乱数を取得し それを表示する サーバーソフトウェア public class ServerSocketDemo { public static void main(string[] args) { try{ // ポートを取得する int port = Integer.parseInt(args[0]); // 乱数ジェネレータを作成する Random random = new Random(); // サーバーソケットを作成する ServerSocket ss = new ServerSocket(port);

// 無限ループを作成する while(true){ // クライアントからの要求を受け取る Socket s = ss.accept(); // 結果をクライアントに書き込む OutputStream os = s.getoutputstream(); DataOutputStream dos = new DataOutputStream(os); dos.writeint(random.nextint()); // ソケットをクローズする s.close(); catch(exception e){ System.out.println("Exception :"+e);

例 12.2 クライアントアプリケーション クライアントソフトウェア import java.io.*; import java.net.*; class SocketDemo { public static void main(string[] args) { try{ // サーバーとポートを取得する String server = args[0]; int port = Integer.parseInt(args[1]); // ソケットを作成する Socket s = new Socket(server, port); // サーバーから乱数を読み取る InputStream is = s.getinputstream(); DataInputStream dis = new DataInputStream(is); int i = dis.readint();

// 結果を表示する System.out.println(i); // ソケットをクローズする s.close(); catch(exception e){ System.out.println("Exception: " + e); >java ServerSocketDemo 4231 4231 は送られてくる要求の到着先となるソフトウェアポート 4231 でなくても構わないが 1024 より下の番号は避ける >java SocketDemo 127.0.0.1 4231 127.0.0.1 はローカルマシンを表す 2 番目の引数はサーバーアプリケーションの時と同じポート番号を指定しなければならない SocketDemo アプリケーションは 乱数を表示すると終了 実行結果 34889301

練習問題 問題 1 クライアントはサーバーに接続して文字列を取得しそれを表示させる 簡単なクライアント / サーバーアプリケーションを作成しなさい ただしサーバープログラムではコマンドライン引数としてポート番号を クライアントプログラムではサーバー名とポート番号を指定してください 問題 2 無限ループを実行するサーバー作成し クライアントから送られてくる double 型の値を読み取りなさい 読み取った値を 2 乗し その結果をクライアントに書き込みなさい また double 型の値をサーバーアプリケーションに送るクライアントアプリケーションを作成しなさい double 型の値は クライアントアプリケーションのコマンドライン引数として指定するようにしなさい