PowerPoint Presentation

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

JavaプログラミングⅠ

Network Programming

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

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

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

Microsoft PowerPoint - Lecture_3

デジタル表現論・第6回

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

untitled

PowerPoint Presentation

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

メディプロ1 Javaサーブレット補足資料.ppt

Prog1_11th

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) Web プログラミング 1 CGI (3 章 ) 2012/6/12( 水 ) 講義

PowerPoint Presentation

WebOTXマニュアル

Prog2_10th

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

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 講義で使うフォルダ 2/23

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

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

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

スライド 1

Microsoft PowerPoint - prog09.ppt


Microsoft PowerPoint - prog09.ppt

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

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

Webデザイン論

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

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

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - OOP.pptx

GEC-Java

Microsoft PowerPoint - prog13.ppt

Programming-C-9.key

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

Microsoft PowerPoint - Lecture_2

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

K227 Java 2

PowerPoint Presentation

Web のクライアントサーバモデル

PowerPoint プレゼンテーション

課題 4 クライアント GUI プログラム 再実験 / 追加課題 UDP 通信プログラム 2

プログラミングA

Java講座

ÉvÉçPM_02

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

Prog1_15th

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

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

サーブレット (Servlet) とは Web サーバ側で動作する Java プログラム 通常はapache 等のバックグラウンドで動作する Servletコンテナ上にアプリケーションを配置 代表的な Servlet コンテナ Apache Tomcat WebLogic WebSphere Gla

GEC-Java

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 演習名 使用するフォルダ 演習 1 Z: Web データ管理 演習

プログラミング入門1

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

プログラミング入門1

SOC Report

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Prog1_10th

JavaプログラミングⅠ

文字列操作と正規表現

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

データ構造とアルゴリズム論

Java言語 第1回

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

PowerPoint プレゼンテーション

Eclipse 操作方法 (Servlet/JSP 入門補助テキスト)

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

9iAS_DEV.PDF

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

~モバイルを知る~ 日常生活とモバイルコンピューティング

Web プログラミング 1 JavaScript (4) (4 章 ) 2013/7/17( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5

IIJ Technical WEEK REST API型クラウドストレージサービス「FV/S」の自社への実装

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

TFTP serverの実装

プログラミング入門1

プログラムの基本構成

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

スライド タイトルなし

メソッドのまとめ

Microsoft PowerPoint - prog03.ppt

Microsoft Word - IPC-intro.docx

JavaプログラミングⅠ

forever朝活

Prog2_9th

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

PowerPoint プレゼンテーション

MIRACLE LoadBalancerを使用したネットワーク構成と注意点

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

PowerPoint プレゼンテーション

Microsoft PowerPoint - chap10_OOP.ppt

PowerPoint プレゼンテーション

はじめに インフォマート API の呼び出しには OAuth2.0 による認証を受ける必要があります OAuth2.0 を使うことで インフォマート API を利用するサービスは インフォマートプラットフォーム ID( 1 以下 PFID) とパスワードを保存したり処理したりすることなく PFID

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

PowerPoint プレゼンテーション

Transcription:

上級プログラミング 2( 第 1 回 ) 工学部情報工学科 木村昌臣

今日のテーマ 入出力に関わるプログラムの作り方 ネットワークプログラミングの続き TCP の場合のプログラム 先週のプログラムの詳細な説明 URLクラス サーバープログラムの例

データ入出力プログラミングの復習

テキストの読み込み関係のクラス テキストからデータを読み込むときには 通常 三段構えで行う バイナリデータとして読み出し 文字データとして読み出し バッファリング ファイル File Input Input Reader Buffered Reader データ取り出し

テキストファイルの読み出し String line=""; バイナリデータとして読み出し FileInput fi 文字データ = new FileInput("Sample.txt"); として読み出し InputReader is =new InputReader(fi,"SJIS"); BufferedReader br =new BufferedReader(is); while((line=br.readline())!=null){ System.out.println(line); } バッファリング

出力については 入力と考え方は同じ ( 順番は逆 ) Input Output Reader Writer PrintWriter などを使うとき 出力先に書き込み内容を反映するには flush メソッドの使用が必要になる場合がある

ネットワークプログラミング

Java でネットワークプログラミング Java には ネットワークを使ったプログラムを簡単に作成できるよう 様々なクラスが用意されている TCP/IP Java プログラム クライアント サーバー

ネットワークの復習 (1) プロトコル ネットワークを使ってデータをやり取りする手順 TCP/IPが主流 HTTP,FTP,TELNET,SMTP,POP3,NTPなど

ネットワークの復習 (2) ホスト名 ネットワーク上のマシンの名前 IP アドレス マシンに振られるネットワーク上の番号 ( 住所 ) 192.168.1.5 など 32bit で表す ポート データをやり取りするための補助番号 IP アドレスとポート番号がペアでデータをやりとり プロトコルと対応づけされている (HTTP では 80)

ネットワークの復習 (3) DNS ホスト名と IP アドレスの対応情報を保存 ホスト名から IP アドレスを引いたり IP アドレスからホスト名を引くことが可能 Unix や Windows では hosts ファイルで代用可能 TCP と UDP TCP: サーバーとの接続を確立する ( データの到達が保証される ) UDP: データは送りっぱなし ( データの到達は保証されない )

HTTP GET /index.html HTTP/1.0 要求 HTML <HTML> <HEAD> 芝浦工業大学 </HEAD> <BODY> 芝浦工大は </BODY> </HTML> Web サーバー

Java でのネットワークプログラミングの考え方 data data 書き込み 読み込み Java プログラム Output Input ホスト名ポート番号を指定 Socket オブジェクト サーバープログラム サーバー

HTTP でデータを Web サーバから取得するプログラム import java.io.*; import java.net.*; class TCP_Http { 必要なパッケージをインポート public static void main(string[] args) { String servername; // サーバー名 servername="orion.data.ise.shibaura-it.ac.jp"; // ポート番号 int portno=80; HTTP のポート番号 =80 InetAddress sadr; StringBuffer sbuff=new StringBuffer(); 続く

try { 続き // ホスト名から IP アドレスに変換 sadr=inetaddress.getbyname(servername); // Socket の生成 Socket skt = new Socket(sAdr,portNo); // サーバーへのデータ送信用ライター BufferedWriter outs =new BufferedWriter( new OutputWriter(skt.getOutput())); // サーバーからのデータ受信用リーダー BufferedReader ins = new BufferedReader( new InputReader(skt.getInput())); サーバーへ送るメッセージ IP アドレスを取得 ソケットとリーダーやライターの作成 // String[] msg={"get /index.html HTTP/1.0 r n"," r n"}; for(int i=0; i<msg.length; i++){ outs.write(msg[i]); } outs.flush(); 続く サーバーへ送信

続き サーバーからのデータ受信 ソケット等のクローズ String tmpstring; while ((tmpstring=ins.readline())!=null){ sbuff.append(tmpstring+" n"); } System.out.println(sBuff.toString()); outs.close(); ins.close(); skt.close(); } catch (UnknownHostException e) { e.printstacktrace(); } catch (IOException e) { } } } e.printstacktrace(); 例外処理

実行結果抜粋 (www.shibaura-it.ac.jp) HTTP/1.1 200 OK Date: Tue, 18 Oct 2005 13:34:08 GMT Server: Apache Last-Modified: Thu, 13 Oct 2005 01:14:32 GMT ETag: "126763-66f0-434db4f8" Accept-Ranges: bytes Content-Length: 26352 Connection: close Content-Type: text/html HTTP の応答ヘッダ HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE> 芝浦工業大学 </TITLE> <META http-equiv=content-type content="text/html; charset=shift_jis"> <STYLE> A { FONT-SIZE: 10pt; TEXT-DECORATION: none ( 以下略 )

Java でのネットワークプログラミングの考え方 data data 書き込み 読み込み Java プログラム Output Input ホスト名ポート番号を指定 Socket オブジェクト 今度の相手はファイルじゃなくてソケット! サーバープログラム

このプログラムでは GET <HTML> </HTML> Buffered Writer Buffered Reader Java プログラム Output Writer Input Reader 書き込み Output Input 読み込み Socket

サーバープログラムを作る

サーバープログラムの構造 Java プログラム クライアントからのデータ クライアントプログラム Socket 生成 待ち Server Socket Input Output クライアントへの出力 処理

サーバー側で動くプログラムを作る 1. ServerSocket オブジェクトを作る ポート番号のみ! ServerSocket srvsock =new ServerSocket(10007); 2. accept メソッドで待ち クライアントからのアクセスが来たらクライアントと通信するための Socket オブジェクトが作られる サーバープログラム Socket skt=srvsock.accept();

何故 ServerSocket クラスには ポート番号しか指定しない? クライアントプログラムからのアクセス待ち 誰と通信するかわからない! わかるのは ポート番号だけ サーバープログラム

何故 ServerSocket クラスには ポート番号しか指定しない? クライアントプログラムからのアクセスきた! Socket オブジェクトでやりとりしよう! クライアントプログラム サーバープログラム

例 )echo サーバー Java プログラム クライアントからのデータ クライアントプログラム Socket 生成 待ち Server Socket Input Output クライアントへの出力 クライアントからの文字列をそのまま出力

TCP サーバープログラム ( 抜粋 ) ServerSocket srvsock=new ServerSocket(10007); boolean flg=true; while(flg==true){ Socket skt=srvsock.accept(); ( 省略 ins は入力ストリームのバッファリーダ outs は出力ストリームのプリントライタ ) String msg=ins.readline(); ( 省略 Msg から出力文字列 tmpstring を生成 Msg が空文字列なら flg を false に ) } outs.println(tmpstring); ins.close(); outs.close(); skt.close();

クライアントプログラム ( 抜粋 ) Socket skt=new Socket("127.0.0.1",10007); ( 省略 ins は入力ストリームのバッファリーダ outs は出力ストリームのプリントライタ ) outs.println(args[0]); while((tmpstring=ins.readline())!=null){ System.out.println(tmpString); } ins.close(); outs.close(); skt.close();

複数のクライアントプログラムがアクセスしてきたら? クライアントプログラム Java プログラム クライアントからのデータ クライアントプログラム クライアントプログラム Socket accept() Server Socket Input Output クライアントへの出力 処理

実は さっきのプログラムは 1 対 1 の通信しかサポートできない サーバー内の処理が短ければ 見かけ上複数のクライアントに対応できる しかし 時間がかかる処理の場合は 1 つのクライアントの処理がおわるまで他のクライアントは待たされる これを解決するには 複数の処理を同時に実行できる仕組みが必要