2013-04-09 147 views
3

所以我一直在寻找不同的方式来创建客户端和服务器程序(在C++中使用可视化工作室),并且我遇到了RPC(远程过程调用)。但我注意到这也使用tcp/ip或udp连接。rpc和普通tcp/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)它需要更多的代码 是一个比其他更好吗?

回答

3

TCP/IP和UDP是数据传输协议(从这里获取数据包到那里)。前者面向连接且可靠,而UDP则无连接且不可靠。他们都不在乎数据究竟是什么(文件,网页,视频等)。

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

UDP没有连接的概念,它是一次性“发送”,没有关于传送的保证。

几个更高级别的网络协议建立在TCP/IP和UDP之上。例如,HTTP(可以让你查看这个网页)。

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

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

+0

所以RPC需要TCP/IP并且不能用于UDP? – 2013-04-09 11:07:18

+0

@LisaCollins RPC不需要TCP/IP ......它需要一个传输层。可能是TCP/IP,但它也可能是Unix Socket或其他将数据从A传输到B的其他设备,具体取决于某个协议应该使用的要求。 TCP/IP是例如当要求是必须收到请求和回应并且不应该丢失时使用。 – 2013-04-09 13:49:36

+0

那么RPC做了什么,TCP/IP或UDP连接无法完成? – 2013-04-09 14:42:30

2

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

因此,就你而言,“使用TCP/UDP”的意思是“基于TCP/UDP创建你自己的RPC”。我建议你阅读有关现有的RPC实现,并根据你的任务选择最可接受的。