4

所以我一直在寻找不同的方法来创建客户端和服务器程序(使用 c++ 中的视觉工作室),我遇到了 RPC(远程过程调用)。但我注意到这也使用了 tcp/ip 或 udp 连接。

那么使用 RPC 与仅使用基本的 tcp/ip 或 udp 连接来连接客户端和服务器有什么区别?

代码完全不同,例如在 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 无连接且不可靠。他们都不关心数据实际上是什么(文件、网页、视频等)。

TCP/IP 在两个端点之间创建连接,然后在一端发送的任何数据都会在另一端接收。

UDP没有连接的概念,它是一次性的“发送”,不保证交付。

几个更高级别的网络协议建立在 TCP/IP 和 UDP 之上。例如,HTTP(允许您查看此网页)。

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 回答