1、分析を開始します
今日から、この記事はこのシリーズの 3 番目の記事です。最初の 2 つの記事は主に理論的なものです。
私もNodeJSの基本は理解しているので大丈夫です! ! !鉄は熱いうちに打て、NodeJS を最後まで実行してみましょう。早速、今日のテーマ「ネットモジュール」にいきましょう。では、「ネット」をどのように理解すればよいでしょうか。
何に使用されますか? (Net
このモジュールは、ソケット サーバーまたはソケット クライアントの作成に使用できます。NodeJS データ通信の 2 つの最も基本的なモジュールは、Net と Http です。前者は Tcp カプセル化に基づいており、後者は本質的に Tcp レイヤーです。ただし、複数のデータのカプセル化が比較されています。これをプレゼンテーション層とみなします。
これは、NodeJS「http.js」のソース コードへの参照です:
この図から、HttpServer が Net クラスを継承し、関連する通信機能を備え、さらに高度なデータのカプセル化を行うことがわかります。
拡張知識 (以下は「inherits」のソースコードです):
継承と再利用を実現する機能です。
ここでは、一般的に使用されるいくつかの概念を含む簡単な概要を説明しました。
を普及するために簡単に説明します。(1)、TCP/IP-----TPC/IP プロトコルはトランスポート層プロトコルであり、主にネットワーク内でデータがどのように送信されるかを解決します。
(2)、ソケット-----ソケットは、TCP/IP プロトコル (プログラム レベル) のカプセル化とアプリケーションです。
(3)、HTTP-----HTTP はアプリケーション層プロトコルであり、主にデータをパッケージ化する方法を解決します。
(4)、7 層のネットワーク モデル -- 物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層。
要約すると、ソケットは TCP/IP プロトコルのカプセル化です。ソケット自体はプロトコルではなく、呼び出しインターフェイス (API) です。
これは、Create、Listen、Connect、Accept、Send、Read、Write など、私たちが知っている最も基本的な関数インターフェイスの一部を形成します。
TCP/IP は単なるプロトコル スタックであり、オペレーティング システムの動作メカニズムと同様に、具体的に実装する必要があり、同時に外部の操作インターフェイスを提供する必要があります
実際には、トランスポート層の TCP はネットワーク層の IP プロトコルをベースにしており、アプリケーション層の HTTP プロトコルはトランスポート層の TCP プロトコルをベースとしているため、Socket 自体はプロトコルではありません。上で述べたように、これは TCP または UDP プログラミングのインターフェイスを提供するだけです。
二つ、体験してください
はい、コンセプトは決まりました。例を示します:
1、server.jsを作成します
2、client.jsを作成します
それを分析してください:
サーバー------net.createServer
TCP サービスを作成します。このサービスはポート 8124 にバインドされます (server.listen)。サーバーを作成すると、コールバック関数
上記の関数を呼び出すときに、パラメータを渡します。このパラメータも関数であり、その機能は他のメソッドによって構築されます。
この時点でクライアントがサーバーにアクセスしない場合、このソケットは存在しません。
客户端------net.connect
名前が示すように、最初のパラメータは、サーバーがリッスンするポートである 8124 に設定します。デフォルトは localhost (ローカル) です。
サーバーでは、ソケットはパイプの一端であり、クライアントでは、クライアント自体がパイプの一端です。複数のクライアントがサーバーに接続すると、サーバーは複数の新しいソケットを作成し、各ソケットは 1 つのソケットに対応します。クライアント。
実行結果:
3. 事例紹介
(1)、次のコードはサーバーがクライアントにテキストを出力するだけで、サーバーからクライアントへの一方向通信が完了します。
Telnet でテスト: telnet127.0.0.1:9000
telnet を実行した後、サービス ポイントに接続し、Hi! Bye! の文字をフィードバックし、すぐにサーバー プログラムを終了して接続を終了します。
サーバーがクライアントから情報を受信できるようにしたい場合はどうすればよいでしょうか?
server.data イベントをリッスンしても、接続を終了しなくても構いません (終了しない場合、接続はすぐに終了し、クライアントからのメッセージを受け入れることができなくなります)。
(2)、server.data イベントをリッスンし、接続を終了しません (そうしないと、接続はすぐに終了し、クライアントからのメッセージを受け入れることができなくなります)。
NodeTCPAPI は、クライアントがサーバーとの接続を終了するときに発生する終了イベントを提供します。
(4)、ブロードキャストを最適化します
「end」がトリガーされないと例外が発生するため、最適化作業が完了することに注意してください。
(5)、NetAPI はクライアント例外をキャプチャするためのエラー イベントも提供します
4、まとめ
1. 初めに関連する概念を理解する
2. Http モジュールと Net モジュールの関係を理解する
3. この記事の例と組み合わせて、関連する API を確認して練習してください
4. ソケットクライアントとサーバー間の通信のアイデア
5. 興味があれば、チャット ルームの例を改善できます