名前はネットワークプログラミングのためのネットワークを介してネットワークプログラミングネットワークプログラミング動作の必要性を、示唆するように、一般的な面接があることを行っている、問題のどのような?
1、UDPおよびTCPプロトコル、または機能の違いを伝えることができます
2、TCPプロトコルの名前は、2つの一般的なクラスであります
図3は、TCPアップロードケースを使用して理解することができます
だから、今日の知識のレビューを開始します。
まず、ソフトウェアアーキテクチャCS / BS
私たちが最初に知らなければならないネットワークプログラミングのための取得:( 1.1ネットワークプログラミング)
CS構造:全体的には、クライアント/サーバー、クライアントとサーバーのアーキテクチャです
BS構造:完全な名前は、ブラウザ/サーバ、ブラウザとサーバーのアーキテクチャです
ネットワークプログラミングは、特定のプロトコルに2台のコンピュータ間の通信を可能にすることです。 どちらの両方のアーキテクチャは、その利点は、サポートネットワークから切り離すことができない持っています
1.2ネットワーク通信プロトコル:通信プロトコルは、データ交換のための規則を遵守しなければならないコンピュータであります------
TCP / IP伝送制御プロトコル/インターネットプロトコル層階層型モデル4
1、物理層
図2に示すように、データリンク層、基礎となるネットワーク・プロトコル
3、ネットワーク層IP
4、トランスポート層TCP UDP
図5に示すように、HTTPのアプリケーション層
1.3プロトコルの分類:java.netパッケージには、クラスとインタフェースが含まれています
1.3.1TCPコネクション型の通信プロトコルには、3ウェイハンドシェイクになります。
1、クライアントがサーバに要求を送信し、サーバーが受信確認を待ち
2、サーバーは、確認要求に応答します
3、クライアントは再び、サーバーへの接続確認を確認要求を送信します
1.3.2UDPユーザデータ通信プロトコルコネクション指向プロトコル、データ伝送は接続する必要はありません
特徴:高速の伝送が、データを失うのは簡単、信頼できません
第二に、通信ネットワークの三つの要素:IPネットワークプロトコルのポート番号
IPコンピュータのIPなぜ2.1のネットワーク・プロトコルは、ちょうどリコールされた以上、我々は知っていますか?
windosが+ Rキー、当社のCMDコンソールを開くには、IPCONFIGは、私たち自身のコンピュータのIPを確認するには、Enter入力してください
だから、時には我々はそれを見てどのように、コンピュータがインターネットにアクセスすることができないことを確認する必要がありますか?
ただ、インターネットの復帰命令へのアクセスがあった場合は、コンソール上のドメイン名空間は、可能にpingを入力
ここでは私たち自身のネイティブコンピュータのIPであることを強調:localhostを127.0.0.1
2.2ポート番号:通信ネットワークは基本的に2つのプロセスである(アプリケーション)は2バイトで0〜65535の整数を表します。
よく知られているネットワークサービスが使用されているので0-1023は、使用することはできません
サーバーのポート番号80
mysqlの:3306無料
オラクル:1521
III。TCP通信RECAP
3.1クライアントは、厳密に、クライアントとサーバーの間で区別する必要があります。サーバーを
通信ステップの終了します。
成功した通信は、クライアントがサーバー接続に接続するためのイニシアチブを取ることができています
サーバーは、最初に起動する必要があります
3.2javaは、TCPプログラムを実装するために2つのクラスを提供します
java.net.Socket ------>通信を確立するためにサーバの両方に対応して、サーバに対して行われたリクエストを送信」-----オブジェクトのソケットを作成します。
ServerSocketを----->オブジェクトを作成するServerSocket ---->クライアント接続を待機するサービスを開くことと等価です
IV。4ソケットソケットキーと困難
4.1概要:このクラスは、クライアントソケット(単に「ソケット」とも呼ぶ)を実装しています。ソケットは、2台のマシン間の通信のエンドポイントです。
4.2コンストラクタ
`の指定したポート番号ホストに接続されているオブジェクトを作成するための公共ソケット(InetAddressのアドレス、int型ポート)
公共のソケット(127.0.0.1,6666)。
4.3メソッドメンバー
入力ストリームのgetInputStream()------>ソケット
出力のgetOutputStream()------>ストリームソケット
近いです();
shutdownOutput();ソケットの出力ストリームを無効にします
パブリック クラスDemoLient { 公共の 静的な 無効メイン(文字列[] argsが)スローIOExceptionが{ // 独自のIPアドレスとポート番号で、バックエンド・ソケットクライアントオブジェクトを作成する ソケットソケット= 新しい新しいソケット(「127.0.0.1」、8888 ); / / クライアントソケットのgetOutputStreamに出力することで、出力ストリームを得る のOutputStream OS = Socket.getOutputStreamを(); // 出力フロー弟コールサーバと同時に、文字列のバイト配列回し os.writeを(「サーバーこんにちは!」.getBytes() ); // 入力ストリームのInputStreamによって作成されたクライアントソケットの入力ストリーム のInputStreamは= IS Socket.getInputStream(); // 速く読ん作るために配列を作成 バイト[]バイト= 新しい バイト [1024 ]; INT LEN = is.read(バイト)。 System.out.println(新しい文字列(バイト0 、LEN))。 // 释放资源 にos.close(); socket.close(); } }
V. ServerScoketキーと困難
5.1 ServerScoketコンストラクタ
ServerSocketのは**(int型ポート) ``指定したポートnumber`のServerSocketを(6666)と結合します
5.2メンバメソッドは、接続されるまでブロックされて通信するクライアントの接続を聞き、受け入れる)(受け入れます
パブリック クラスdemoServer { 公共 静的 ボイドメイン(文字列[]引数)がスローIOExceptionが{ // ServerSocketをサーバー・オブジェクトを作成し、固定ポート番号 のServerSocket SE = 新しい新しい ServerSocketを(8888 ); // サーバーソケットは、リスナーメソッドがコールはソケットオブジェクト受け入れる生成するオブジェクト ソケット=受け入れse.acceptを(); // 使用してネットワーク入力バイト・ストリーム・ソケット・オブジェクトを生成する InputStreamを= IS ; accept.getInputStream() // ローカル入力ストリームの読み出しの使用 バイト []バイト= 新しい新しい バイト [1024 ]; int型 LEN = is.read(バイト)。 System.out.println(新しい新しい文字列(バイト、0 、LEN)); // バイトのネットワーク伝送出力ストリームを使用してコンテンツクライアントを受け取った後には、感謝 のOutputStream OS = accept.getOutputStream(); os.writeを(「感謝受信「!.getBytes()); // 解放資源 accept.close(); se.close(); } }
VI。サーバへのケースのアップロード写真
原理ファイルアップロードサーバー
1ローカル読んローカル・クライアント・ファイルのバイトストリームを使用して
クライアントがサーバーに画像のネットワーク2バイトの出力を使用しています
バイトストリームを使用してネットワークサーバ3は、クライアントによってアップロードされた入力ファイルを読み込みます
クライアントのファイルサーバーのハードディスクにバイトのローカル出力ストリームを使用してサーバに保存されている4
クライアントのライト転送成功への5サーバネットワークの出力ストリーム
6クライアントは、サーバのライトバック「転送成功」を読むためにネットワークバイト入力ストリームを使用しています
注意:クライアント/サーバーとローカルファイルの読み取りおよび書き込みは、独自のフローを作成する必要があります
によって提供されるクライアント/サーバ・ネットワーク・ソケット・ストリームの間の相互作用
ローカルクライアント----「コピー---」サーバー
サーバー----「コピー----」サーバーのローカルのハードディスク
それは明確でなければならない:データソース先