rpc和普通tcp / udp服务器客户端程序之间的区别?

时间:2013-04-09 10:39:41

标签: c++ tcp udp client-server rpc

所以我一直在寻找不同的方法来创建客户端和服务器程序(使用c ++中的visual studio),我遇到了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)需要更多代码 这个比那个好吗?

2 个答案:

答案 0 :(得分:3)

TCP / IP和UDP是用于数据传输的协议(从此处获取数据包)。前者是面向连接且可靠的,而UDP是无连接且不可靠的。他们都不关心数据实际是什么(文件,网页,视频等)。

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

UDP没有连接的概念,它是一次性发送&#34;发送&#34;,没有关于交付的保证。

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

RPC是一种更高级别的协议,它允许一台计算机在另一台计算机上执行代码。您引用的代码行仅仅是为该RPC实现设置配置参数。

总结:RPC需要一个网络传输协议(如TCP / IP)来完成它的工作,但RPC是一个更高级别的协议,它实现了一个不同的目的,而不仅仅是将非结构化数据从一台计算机发送到另一台计算机。

答案 1 :(得分:2)

你在谈论不同的观念。 RPC是机制,TCP / UDP - 通信方式。 RPC概念有很多不同语言的实现:read wiki。 TCP / UDP - 是传输。

因此,在您的情况下,“使用TCP / UDP”意味着“基于TCP / UDP创建自己的RPC”。我建议你阅读现有的RPC实现,并根据你的任务选择最可接受的。