4

そのため、クライアント プログラムとサーバー プログラムを作成するさまざまな方法を探していました (C++ のビジュアル スタジオを使用)。RPC (リモート プロシージャ コール) に出会いました。しかし、これも tcp/ip または udp 接続を使用していることに気付きました。

クライアントとサーバーを接続するための基本的な tcp/ip または udp 接続に RPC を使用することとの違いは何ですか?

たとえば、RCP で tcp を使用する場合、コードは完全に異なります。

      reinterpret_cast<unsigned char*>("ncacn_ip_tcp"), // Use TCP/IP protocol.
      reinterpret_cast<unsigned char*>("localhost"), // TCP/IP network address to use.
      reinterpret_cast<unsigned char*>("4747"), // TCP/IP port to use.

しかし、他のプログラム (WinSock を使用するなど) では、より多くのコードが必要になります。

4

2 に答える 2

5

TCP/IP と UDP は、データ転送用のプロトコルです (ここから別の場所にデータ パケットを取得します)。前者はコネクション型で信頼性が高いのに対し、UDP はコネクションレスで信頼性に欠けます。データが実際に何であるか (ファイル、Web ページ、ビデオなど) はどちらも気にしません。

TCP/IP は 2 つのエンドポイント間の接続を作成し、一方の端で送信されたデータはすべて他方で受信されます。

UDP には接続の概念がありません。これは、配信に関する保証のないワンショットの「送信」用です。

TCP/IP と UDP の上に、いくつかの高レベルのネットワーク プロトコルが構築されています。たとえば、HTTP (これにより、この Web ページを表示できます)。

RPC は、あるコンピューターが別のコンピューターでコードを実行できるようにする高レベルのプロトコルです。引用したコード行は、その RPC 実装の構成パラメーターを設定しているだけです。

概要: RPC は、その仕事を行うために (TCP/IP のような) ネットワーク転送プロトコルを必要としますが、RPC は高レベルのプロトコルであり、非構造化データをあるコンピューターから別のコンピューターに単に送信するのとは異なる目的を果たします。

于 2013-04-09T11:00:14.720 に答える
2

あなたはさまざまな概念について話している。RPC はメカニズムであり、TCP/UDP - 通信方法です。RPC の概念には、さまざまな言語で多くの実装があります: wiki を読んでください。TCP/UDP - トランスポートです。

したがって、あなたの場合、「TCP/UDP を使用する」とは、「TCP/UDP に基づいて独自の RPC を作成する」ことを意味します。既存の RPC 実装について読んで、タスクに基づいて最も受け入れられるものを選択することをお勧めします。

于 2013-04-09T11:00:15.553 に答える