blog

JavaSEの基礎 - ネットワーク・プログラミング

1. ネットワーク通信プロトコル 2. IPアドレス 3. ポート番号 1. 概要 2. 手順 3. 表現 4. 図 5. ソケット 1). クライアント側の実装 2). サーバー側の実装 1....

Sep 23, 2020 · 3 min. read
シェア

ネットワークプログラミングの3要素

ネットワーク通信プロトコル

  1. 物理層/データリンク層
  2. ネットワーク層
  3. トランスポート層
  4. アプリケーション層

IP

Ipv4 : 4バイト

Ipv6:16バイト

ポート番号

2バイトで構成

0~65535の範囲

ヒント

  • 2014年のポート番号は使用できず、システムによって既知のネットワーク・ソフトウェアに割り当てられています。
  • データベース MySql : 0336
  • データベース Oracle : 2511
  • Tomcatサーバー:8080

TCP通信プロトコル

概要

TCP通信はコネクション指向の通信であり、クライアントとサーバーは通信を行う前に、次の3つのハンドシェイクを経て論理的なコネクションを確立する必要があります。

ステップ

  1. サーバー側の起動
  2. クライアント側のリクエスト
  3. IOオブジェクトを含む接続の作成
  4. クライアントとサーバーは、このIO オブジェクトを使用して通信できます。
  5. 通信データは単なる文字ではないので、IOオブジェクトはバイトストリームオブジェクトです。

表現

サーバー側:ServerSocketクラス

クライアント:ソケットクラス

ダイアグラム

ソケット

Socket このクラスはクライアント・ソケットを実装しており、これは2つのマシン間の通信のエンドポイントです。

Socket(ソケットIPアドレスとポート番号を含むネットワーク単位

コードの実装

). クライアント側の実装

public static void main(String[] args) throws IOException{
 //1.サーバーの名前またはIPアドレスとポート番号をパラメータとしてソケットオブジェクトを作成する。
 Socket socket = new Socket(".1",8888);
 
 //2.ソケットの出力ストリームオブジェクトを取得する
 OutputStream outputStream = socket.getOutputStream();
 
 //3.出力ストリーム・オブジェクトを使ってサーバーにデータを送る
 outputStream.write("ハロー・サーバー );
 
 //4.サーバーから書き戻されたデータを読む
 InputStream inputStream = socket.getInputStream();
 byte[] bytes = new byte;
 int len = inputStream.read(bytes);
 System.out.println(new String(bytes,0,len));
 
 //5.リソースを解放する
 socket.close();
}

). サーバー側の実装

public class TCPServer{
 public static void main(String[] args) throws IOException{
 //1.指定されたポート番号でサーバーソケットを作成する
 ServerSocket severSocket = new ServerSocket(8888);
 
 //2. サーバーソケットのaccept()メソッドを使用して、要求されたクライアントオブジェクトを取得する。
 Socket socket = serverSocket.accept();
 
 //3. 取得したクライアント・オブジェクトのgetInputStream()メソッドを使用してバイト入力ストリームを取得する。
 InputStream inputStream = socket.getInputStream();
 
 //4. クライアントから送信されたデータを読む
 byte[] bytes = new byte;
 int len = inputStream.read(bytes);
 System.out.println(new String(bytes,0,len));
 
 //5. クライアントにデータを書き戻す
 OutputStream outputStream = socket.getOutputStream();
 outputStream.write("感謝".getBytes());
 
 //6. リソースを解放する
 socket.close();
 serverSocket.close();
 }
}

模擬B/Sサーバーの分析

Read next

J42 プロトタイプチェーン

1.これを見つけるための普通の関数2.すべての配列はArrayクラスのインスタンスです1.すべてのオブジェクトはObjectクラスのインスタンスです2.すべての数値はNumberクラスのインスタンスです3.プロトタイプチェーン1.すべての関数は、属性:プロトタイプ(prototype)を持って生まれています。

Sep 22, 2020 · 2 min read